首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个小疑点,多谢

2012-03-22 
请教大虾一个小问题,谢谢#includeiostreamusing namespace stdlong atol(char *str){char *pstrlong

请教大虾一个小问题,谢谢
#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

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

热点排行