请教大虾一个小问题,谢谢
#include<iostream>
using namespace std;
long atol(char *str)
{
char *p=str;
long l=0;
long m=0;
while(*p!='\0')
{
l=*p++ - '0';
m=m*10+l;
}
if(*p=='\0')
return m;
else return 0;
}
int main()
{
char *str="10000";
int l;
l=atol(str);
cout<<l<<endl;
return(0);
}
long atol(char *str);中l=*p++ - '0';怎么理解,谢谢......
[解决办法]
'0'的ASCII码是48, *p取出对应位字符(也就是数字)的ASCII码,这样一相减就得到了*p对应位的数字了。
[解决办法]
参看ascii表 其实就是一个计算方式、、比如 '9' 和 '0'的ascii码差9 '9' - '0' = 9 不就转换成数字了么
[解决办法]
比如'1' - '0' =1
[解决办法]