这个你们老师没有教过么?这是C语言未定义行为,不同的编译器结果都不一样的,所以根本没有“标准答案”可言。
参考:https://blog.csdn.net/qq_29169813/article/details/51416281
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
// 对于逗号运算符,返回值为第一个元素,即 += a + 2 后的 a,所以 c = 4
// 但是后面的语句也会被执行,即 a = b,所以 a - 2
c = (a += a + 2), (a = b, b + 3);
printf("%d %d %d\n", a, b, c); // 输出 2 2 4,选 A
return 0;
}
就是考查了运算符的结合方向和运算优先级关系。但是,答案可能不唯一,因为不同的编译器的得出的答案可能不一样。