富泉公寓租房:请教一道C语言的题

来源:百度文库 编辑:中科新闻网 时间:2024/04/27 23:04:42
main()
{ char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++) for(j=0;p[i][j]>'\0'&&p[i][j]<=='9';j+=2)
s=10*s+p[i][j]-'0'; printf("%d",s);}
请问s=10*s+p[i][j]-'0'是什么意思?为什么是10*s? 为什么要-'0'

p[i][j]的取值依次为:p[0][0]='6' p[0][2]='3'
p[1][0]='8' p[1][2]='5',-'0'是为了将p[i][j]变为数字,10*s是为了让6,3,8,5不在同一位上,且依次各高一位,于是得到最后的正确结果6385,换言之s的值是6385。

p[0]-> &ch[0] //p[0]指向"6937"首地址,
p[1]指向"8254"首地址
s=0*10+static_cast<int>'6' //自动将6转换为数字
于是s=6937+8254
"\0"是字符数组结束标志。

'\0'???
这里可能是点问题。