c语言整型和字符转换的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/06/11 15:13:39
char a='5';
int b;
b=a-'0';
printf("%d",b);
输出就是5了 为什么 关键是这一句b=a-'0'; 不是太理解
谢谢

首先,b是整型的,所以等式右边的值一定要能够用整形来表示,再次,要知道,‘0’表示的是‘0’这个字符,它的ASCII值是48(好像是,不重要),而a表示‘5’这个字符,两个字符相减就相当于他们的ASCII值做差,很明显,0和5的ASCII值相差5,所以答案就是5了。你要知道大概的数字和字母的ASCII值都是多少,记住大概就可以,真要用,测试一下就好了。

b=a-'0';
相当于 b=atoi(a);

也就是 把字符型转换成整型...

a=b+'0';
相当于 b=itoa(b);

也就是 把整型转换成字符型...

字符'5'的ASC码比字符'0'的ASC码多5;
a='5';
b=a-'0';<==>b='5'-'0';b=5;
同理'9'-'3'=6;

C语言没有学好就是说你的。。。赶紧面壁去。。。
-‘0’就是减去字符0的ASCII码

char的整形数值就是他对应的ascii妈的设置。 '5' 的ascii比'0'大四