若有以下程序: #include<stdio.h> main( ) { int a=0,b=0,c=0; c=(a— = + +a),(a+ =b,b+ =4); printf(″%d,%d,%d\n″,a,b,c); } 则程序的输出结果是( )。

admin2020-05-19  27

问题 若有以下程序:
#include<stdio.h>
main( )
{
int a=0,b=0,c=0;
c=(a— = + +a),(a+ =b,b+ =4);
printf(″%d,%d,%d\n″,a,b,c);
}
则程序的输出结果是(    )。

选项 A、0,4,0
B、0,4,4
C、1,4,1
D、1,4,4

答案A

解析 逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。另外逗号运算符的优先级最低,所以先计算c=(a— = + +a)这部分。其中,赋值运算符从右往左计算,先执行+ +a,a自增1后再赋值,所以a的值为1,执行a=a—1,即a=1—1,a的值为0,并将0赋给变量c。第二部分(a+ =b,b+ =4),先执行a=a+b,a=0+0,即a的值为0,然后执行b+ =4,b=0+4,即b的值为4。所以输出结果为0,4,0,故选项A正确。
转载请注明原文地址:https://kaotiyun.com/show/2cCp777K
0

最新回复(0)