问题详情

【题目描述】

第 1 题以下程序的输出结果是 

#include  

void prt (int *x, int *y, int *z) 

{printf("%d,%d,%d\n",++*x,++*y,*(z++));} 

main() 

{int a=10,b=40,c=20; 

prt (&a,&b,&c); 

prt (&a,&b,&c);}A.11,42, 31 

12,22,41 

B.11,41,20 

12,42,20 

C.11,21,40 

11,21,21 

D.11,41,21 

12,42,22

【我提交的答案】: B【参考答案与解析】:

正确答案:B答案分析:

 

参考答案

此题考查i++和++i的区别,i++表示先将当前值赋给下面语句后再自加1,而++i表示先自加1然后把自加以后的值再赋给下面语句。题中a=10,b=40,c=20,执行完第一步++a,++b,c++后的输出为11,41,20,前两个都是先自加再输出的,最后一个是先输出了再自加,因此保存的是自加之前的值,而自加后的值程序中并未进行保存。执行完第一步后输出一行值,再执行第二步时在第一次输出值的基础上再进行运算,前两个先自加1再输出为12,42,最后一个先输出再自加,结果为20,道理同第一次输出的。希望我的解释能帮助你理解并掌握这个知识点

您可能感兴趣的试题