int main(){
char ch;
scanf("%c",&ch);
if(ch>='a'&&ch<='z')
ch-=32;
printf("%c",ch);
return 0;
}
2.还是说单纯指的是ch为a到z之间的字符
3.还是有别的含义或理解方式
最基本的概念没有弄明白哦
你所谓的字符,a、b、c、d,那是你看到的,但是在电脑里,只有0和1,那怎么表示a、b、c?
只能用0 和 1 组成数字强行表示 a、b、c;
同理,怎么表示字符空格、回车、制表符,同样的,用0和1 组成数字。。
这就是 ASCII 码,你就理解为数字码,用来对应的
所以,你这句if,你就理解为数字之间的比较
用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。
而双引号指的就是本身的字符。
这是两种不同的形态
(ch>='a'&&ch<='z') 是判断字符ch是否为小写字符的
你的1和2是一个意思,这一行两种理解都可以
1.c语言中各种值类型之间可以隐式转换
2.当进行大小比较时,参与比较的值会统一转换成较大的类型进行比较,比如int和double进行比较,int会转换为double
3.当两个char进行比较时,比较的是其二进制,也就是ascii码
4.你也可以将int和char进行比较,那么char会转换为int
5.你可以理解为'B'的ascii码比'A'的ascii码大,也可以直接理解为B比A大,反正结果都一样
大小写字母的码差值为32.
ch在下方表现为一个变量,如同方程式x一样 X>A =X<Z
if(ch>='a'&&ch<='z') //判断值是否在小写字母区间
ch-=32; // 这一步就是将ch的码值-32获得大写的字符