字符串与数字间的转化
字符串转化为数字时,要用到语句:temp=temp*10+(*str-'0');
请问:(*str-'0')为什么要减‘0’,不直接用*str?
[解决办法]
因为直接*str取得的是字符啊。。。减去'0'是通过ASCII码运算会把字符转化为数字
[解决办法]
数字0的ASCII码是从'0'(0x30)开始的。
[解决办法]
//'0'的编码为48//'1'的编码为49//'2'的编码为50...//'9'的编码为57
[解决办法]
'0'。。 '9' 这些在asc码中都是(对应的数字 + 47),所以数字字符与'0'做差就可以直接得到对应的数字, 这也是常用的方法。
直接用*str, 到表达式中就会直接转化为asc码中的数字,如47 48, 那就出错了。
[解决办法]
字符数字与ASCII码之间的差值,就是数字的int型,你可以研究研究ASCII码表
[解决办法]
快速计算
"0" 的 ascii 值是 0x30 也就是48
所以 对于字符 "1" - "0" = "1" - 0x30 = "1" - 48 = 1 整形