1405701162 发表于 2020-12-31 16:50:49

有点不懂第七行,求大神指点。

#include<stdio.h>//头文件
int main()//主函数
{
char character_Big,character_Small;//定义字符变量
printf("请输入字母:");
scanf("%c",&character_Big);//键盘输入字符
character_Small=(character_Big>='A'&&character_Big<='Z')?(character_Big+32):character_Big;
printf("%c\n",character_Small);//输出
return 0;//函数返回值为0
}

jackz007 发表于 2020-12-31 16:59:03

本帖最后由 jackz007 于 2020-12-31 18:23 编辑

      character_Small=(character_Big>='A'&&character_Big<='Z')?(character_Big+32):character_Big;
      这句的意思是:
      if(character_Big>='A'&&character_Big<='Z') character_Small + 32 ;
      就是说,如果 character_Big 是大写字母,那就对它加 32,变成对应的小写字母,因为每个字母大小写的编码之间有个固定的差值 32,小写字母编码大于大写字母。例如,'A' + 32 = 'a' , 'z' - 32 = 'Z'。
      下面的代码将显示所有可打印字符的 ASCII 编码及字符:
#include <stdio.h>

int main(void)
{
      int i                                                   ;
      for(i = 32 ; i < 128 ; i ++) printf("%3d : %c\n" , i , i) ;
}      

1405701162 发表于 2021-1-1 10:17:01

jackz007 发表于 2020-12-31 16:59
这句的意思是:

      就是说,如果 character_Big 是大写字母,那就对它加 32,变成对应的 ...

谢谢

Minecraft程序猿 发表于 2021-1-1 12:34:37

三目运算符(条件表达式),和if... else... 结构差不多,只是简化了

zhangjinxuan 发表于 2022-8-17 14:19:59

第七行是将character_Big的小写形式赋值给character_Small。
这主要考察字符大小写转换,考ascii码。
字符 a 的ascii码比字符 A 的ascii码正好多32,其他字符同理,所以一个大写字符+32就是他的小写形式
反正牢记小写字母与对应大写字母的ascii码差是32就对了!

额外减小 发表于 2022-8-18 00:55:12

把大写字母的ASCII减32就是小写字母,然后就是,如果c_Big是大写,就转成小写,如果已经是小写,就原封不动

题外话 其实这么简单的代码没必要加注释{:10_260:}

lingli.wu 发表于 2022-8-18 10:04:09

第七行是一个条件判断语句 ,等同IF语句。
意思就是判断输入的字母如果是大写就转换成小写,然后打印出来 ,如果是小写就直接赋给小写打印出来
每个字母大小写的ASCII编码之前的差值是32,大写字母+32就等于小于字母
页: [1]
查看完整版本: 有点不懂第七行,求大神指点。