有点不懂第七行,求大神指点。
#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 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) ;
} jackz007 发表于 2020-12-31 16:59
这句的意思是:
就是说,如果 character_Big 是大写字母,那就对它加 32,变成对应的 ...
谢谢 三目运算符(条件表达式),和if... else... 结构差不多,只是简化了 第七行是将character_Big的小写形式赋值给character_Small。
这主要考察字符大小写转换,考ascii码。
字符 a 的ascii码比字符 A 的ascii码正好多32,其他字符同理,所以一个大写字符+32就是他的小写形式
反正牢记小写字母与对应大写字母的ascii码差是32就对了! 把大写字母的ASCII减32就是小写字母,然后就是,如果c_Big是大写,就转成小写,如果已经是小写,就原封不动
题外话 其实这么简单的代码没必要加注释{:10_260:} 第七行是一个条件判断语句 ,等同IF语句。
意思就是判断输入的字母如果是大写就转换成小写,然后打印出来 ,如果是小写就直接赋给小写打印出来
每个字母大小写的ASCII编码之前的差值是32,大写字母+32就等于小于字母
页:
[1]