字符型数据 -‘0’ 即可得到对应的整型数据
- 话不多说,看代码
#include <stdio.h>
int main(void){
char ch = '1';
int num = ch - '0';
printf("%d\n",sizeof(ch)); //1
printf("%d\n",sizeof(num));//4
printf("%c\n",ch); //1
printf("%d\n",num); //1
return 0;
}
- 那么为什么 字符型-‘0’ 就可以得到整型呢?
我们知道,char型数据在内存中保存的是字母的ASCII码。例如:'A’在ASCII中的码值为65,那么’A’对应的内存块中存储的即是65的二进制。
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)
字符 ‘0’ 对应的码值为48,所以在内存中存储的是48的二进制,我们从表中可以看出, ‘1’ 的字符编码是49,在内存中存储的的就是49的二进制,当49-48=1,再将其转换成整型,那么在内存中存储的二进制1也就是数字1啦。
- 举一反三,为什么小写字母 ‘A’-‘ ’ 可以转为大写字母呢?
这是因为空格’ ’ 的ASCII码值为32,而大写字母与小写字母码值真好相差32喔。
如有不妥,请指正。