请问能解释一下下面程序的运行过程吗?谢谢O(∩_∩)O

#include<iostream>
using namespace std;
int main()
{
char a[]="12345",*p;
int s=0;
for(p=a;*p!='\0';p++)
s=10*s+*p-'0';
cout<<s;
return 0;
}

char a[]="12345",*p;
int s=0;
for(p=a;*p!='\0';p++)
s=10*s+*p-'0';//将“12345”转换成整形数字
cout<<s;
return 0;追问

s=10*s+*p-'0' 这个什么意思?如果是字母呢?和ASCII码值有关系吗?

追答

*p-'0'//即为p指向的字母与‘0’的位置差,是个整数,形象的说如果×p的值为'0'那么*p-'0'的值为0
10*s为上个循环的值 每个循环取上面字符串中的一位,计算,每次循环会将上个值×10,即左移一位。最后得到的是字符串对应的数字。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答