首先,我觉得你的程序有点问题,应该是:
main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",x,y);
}
对吗?
在这里,第一个%d输出的是x的值,第二个输出的是y的值。
而在所有的运算符中,逗号的优先级是最低的,并且执行方向是自左向右。
在y=(x=a+b),(b+c);中,先执行语句y=(x=a+b)。
在这条语句中,又先执行括号里的内容,因此x=a+b,所以x值为6。而同时x=a+b这条语句的值也为6。因此,把6又符值给了y,这时y就等于6。
执行完了语句y=(x=a+b)后,就开始执行b+c,它的值为10,但它并没有将这个值符给谁。
因此,打印出:
y=6,x=6
main()
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d,x,y");
}
,后面部分没有工作。
即y=(x=a+b) 变成y=x;
printf("y=%d,x=%d,x,y");
若改成
printf("y=%d,x=%d,y,x");
才会输出:
y=10,x=6
y输出的是x的值