【题目描述】
第 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,道理同第一次输出的。希望我的解释能帮助你理解并掌握这个知识点