c=(a+=a+2),(a=b,b+3)

img

img


int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf("c=%d",c);

这个你们老师没有教过么?这是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;
}

就是考查了运算符的结合方向和运算优先级关系。但是,答案可能不唯一,因为不同的编译器的得出的答案可能不一样。