读书人

请问一个小疑点多谢

发布时间: 2012-03-22 17:43:57 作者: rapoo

请教大虾一个小问题,谢谢
#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
[解决办法]

探讨

比如'1' - '0' =1

[解决办法]
哈哈 你取的是字符阿!!

读书人网 >C++

热点推荐