10、以下程序程序运行后的输出结果是( )。
int f(int n){ static int a=1;
n+=a++; return n;}
main(){ int a=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);}
A.7 B.8 C.9 D.10
能说的详细点吗?
C
亲你到 这里 这里 去试一下就知道答案了。这种太简单了的题目不建议问哦
第一次调用 f 函数, 实际参数 main.a = 3, 因此调用 f(3) ,
f.n = 3
f.a = 1
f.n += f.a++ // 这句等价于: f.n = f.n + f.a; f.a++;
因此有: f.n = 4; f.a =2
返回 f.n 到主程序,因此返回 4 到 main, 我们有 main.s = f的返回值 = 4
第二次调用 f 函数, 实际参数 main.a = 3, 因此调用 f(3)
f.n = 3
此时因为前一次调用之后 f.a = 2. 因此
f.n += f.a++ // 这句等价于: f.n = f.n + f.a; f.a++;
因此有: f.n = 5; f.a =3
返回 f.n 到主程序,因此返回 5 到 main, 我们有 main.s = main.s + f 的返回值,
也就是: s = 4 + 5 = 9。
如果这还看不懂,继续踩而不是赞的都是猪头。