求解几个C++基础题(一)

来源:百度知道 编辑:UC知道 时间:2024/06/21 00:24:12
小弟正在准备C++的二级考试,现在遇到几个问题,望请教各位前辈。
小弟积分有限,每题10分。
1:
下面程序段输出的结果是( )
char ch[]="600";
int a,s=0;
for(a=0;ch[a]>='0'&&ch[a]<='9';a++)
s=10*s+ch[a]-'0';
cout<<s<<endl;
答案是:9 请前辈解答。

2:
若有以下函数调用语句:
f(m+n,x+y,f(m+n,z,(x,y)));
实参个数是3,那请问 形参个数是不是5?

第一题,我自己计算了一下结果应该是600.你这答案怎么会是9呢。
为了证实结果我亲自运行了下结果确实是600.
在循环里
第一次s=10*0+'6'-'0'得6
第二次s=10*6+'0'-'0'得60
第三次s=10*60+'0'-'0'得600
循环结束。

第二题,实参和形参都是三个,不要给逗号给迷惑了。实参列表里的f函数就是当做一个实参。

第一题答案是600
第二题形参实参不是这样算的

2楼的答案即为正解

二楼正解