字符与字符进行加减运算
此时会先将字符转换为ASCII码,将二者ASCII码值相加。
char i = '3' + '0';
int j = '3' + '0';
i的值为c,j的值为99,因为字符c的ASCII码为99
字符与数字进行加减运算
会将字符转换为ASCII码,然后和数字相加。
char i = 3 + '0';
int j = 3 + '0';
i的值为3,因为字符0的ASCII码为48,加3后为51,而51正好是字符3的ascii码;那么很显然j的值就为51
字符与数字之间的转换
如果有字符3,该如何将其转化为数字3呢?
char i = '3' - '0';
int j = '3' - '0';
按上面这样行不?
i的结果是,j为3,原因前面提到过,他们会转换为ASCII码进行运算,字符3的ASCII码为51,字符0为48,那么51-48=3,而ASCII码3对应的字符是下图这么个玩意。
所以对于一个字符,可以通过让它减字符0的方式来完成与数字的转换。
现在看看如果有数字3,该如何将其转化为字符3呢?
按上图这样行不?事实上编译器会报错,我猜原因是0的ascii码为48,3-48=-45为负数,而负数并没有与之对应的字符,但j可以正常输出,结果为-45。
接下来挑一个数值大于0的ascii码48的数字,如93,此时就不会报错了,结果如下:
运行结果:
那么按下图这样行不行呢?
i的值为3,j为51,因为3+0的ascii码 48 = 51,而字符3的ascii码正好为51。
现在我们可以得出结论
- 字符c转数字,就用c-‘0’
- 数字d转字符,就用d+‘0’