C语言的一个问题

书中的一段:
main()
{
char ch1,ch2;
ch1 = 'p';
ch2 = 'q';
ch1 = ch1-'a'+'A';
ch2 = ch2-32;
printf("%c,%c\n%d,%d\n",ch1,ch2,ch1,ch2)
}
程序运行的结果为:
P,Q
80,81
程序中,ch1,ch2被说明为字符变量并赋予字符'p'和'q'。在C语言中允许字符变量用字符的ASCII码参与数值运算。'A'-'a'=-32,即大小写字母的ASCII码相差32,因此运算后把小写字母换成大写字母。然后分别以整型和字符型输出。

里面的“'A'-'a'=-32,即大小写字母的ASCII码相差32,因此运算后把小写字母换成大写字母”是什么意思?为什么会“运算后把小写字母换成大写字母”?

第1个回答  2007-09-28
每个大写字母与对应的小写字母ASCII码值都相差32.
'a'的ASCII码值为97,'A'的ASCII码值为65,97-65=32
'b'的ASCII码值为98, 'B'的ASCII码值为66,98-66=32.
小写字母的ASCII码值都大于大写字母的ASCII码值.所以,小写字母转换成大写字母只要减去一个小写的'a',再加上一个大写的'A'就可以了.
比如:小写的'b'转换成大写的'B':'b'-'a'+'A',相当于98-97+65=66,即大写'B'的ASCII码值.本回答被提问者采纳
第2个回答  2007-09-28
p的ASCII代码是112
P的ASCII代码是80
大小写相差32,小写的比大写的大32。
第3个回答  2007-09-28
看一下ASCII码表就知道了。

附:ASCII码表

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网