C语言问题?请详加解释

来源:百度知道 编辑:UC知道 时间:2024/05/28 02:16:20
3.执行下面程序段后,输出结果为( )。
int a=1,b=1,c=1;
a=a+b++ +c++;
printf(〃%d,%d,%d〃,a,++b,c++);
A.3,3,2 B.3,2,3
C.3,3,3 D.3,2,2 (〃%d,%d,%d〃,a,++b,c++)为什么要用3个%d

结果为A、(3,3,2);
printf输出函数输出结果时将按指定的格式输出,所以每输出一个结果都要指定其输出格式,此程序中要输出3个结果所以要用三个“%d”;
a=a+b+++c++ 即为a=a+(b++)+c++,
其中b++,其功能为在用b之后,加1;(即先使用b,再执行b+1)
c++,同上;
++b,其功能为在使用b 之前,加1;(即先执行b+1,再使用b)
所以a=1+1+1=3;之后b=2,c=2;
printf()运行时从右至左运行(输出结果顺序不变),即先运行c++,再运行++b ,最后运行a;
由上边可知,a=3,b=++b=3(b先加1再使用),c=c++=2(先使用再加1)

应为你要输出3个值一个%d只能输出一个整数值

A。因为%d的个数必须和后面的参数个数一致。

我回答了要给我加分啊。
printf(〃%d,%d,%d〃,a,++b,c++);
c语言是左传递,在运行的时候是从c开始执行,然后是b,最后是a,但在执行%d的时候是从a开始打印,然后b,最后c,应该就有3个了