atoi函数,将字符串转换为呼应的整型数,看不懂啊
atoi函数,将字符串转换为相应的整型数,看不懂啊~
int atoi (char s[ ] )
{
int i, n;
n = 0;
for(i = 0; s[ i ] >= '0' && s[i] <= ' 9 '; ++i)
n = 10 * n + (s[i] - '0');
return 0;
}
这是一个将字符串转化为相应整型数的函数,请问那个n=10*n+(s[i]-'0')这个式子是什么意思?另外这样不是进行整型转化吗?直接写s[i]行吗?为什么要写(s[i]— ‘0’),或者写成(s[i]-0)这样行吗?如果不行?为什么?
------解决方案--------------------
for(i = 0; s[ i ] >= '0' && s[i] <= ' 9 '; ++i)
n = 10 * n + (s[i] - '0');
这个是从高位开始转换,s[ i ] >= '0' && s[i] <= ' 9 '表示字符的ascii值在‘0’-‘9’之间,也就是说是数字。否则不转换。
n = 10 * n + (s[i] - '0');中:
s[i] - '0',才能将ascii码转换成数字。10*n是将前一次的计算结果进位。
int atoi (char s[ ] )
{
int i, n;
n = 0;
for(i = 0; s[ i ] >= '0' && s[i] <= ' 9 '; ++i)
n = 10 * n + (s[i] - '0');
return 0;
}
这是一个将字符串转化为相应整型数的函数,请问那个n=10*n+(s[i]-'0')这个式子是什么意思?另外这样不是进行整型转化吗?直接写s[i]行吗?为什么要写(s[i]— ‘0’),或者写成(s[i]-0)这样行吗?如果不行?为什么?
------解决方案--------------------
for(i = 0; s[ i ] >= '0' && s[i] <= ' 9 '; ++i)
n = 10 * n + (s[i] - '0');
这个是从高位开始转换,s[ i ] >= '0' && s[i] <= ' 9 '表示字符的ascii值在‘0’-‘9’之间,也就是说是数字。否则不转换。
n = 10 * n + (s[i] - '0');中:
s[i] - '0',才能将ascii码转换成数字。10*n是将前一次的计算结果进位。