逗号运算符优先使用时?:运营商

Ali*_*Ali 13 c c++ comma operator-precedence

我不知道为什么下面两个子程序的结果不同:

    int a , b;

    a = 13, b=12;
    (a > b)? (a++,b--):(a--,b++); // Now a is 14 and b is 11

    a = 13, b=12;
    (a > b)? a++,b-- : a--,b++;   // Now a is 14 but b is 12
Run Code Online (Sandbox Code Playgroud)

但是对于这些情况,结果是相同的:

    a = 13, b=12;
    (a < b) ? a++,b-- : a--,b++; // Now a is 12 and b is 13

    a = 13, b=12;
    (a < b) ? (a++,b--) : (a--,b++); // Again a is 12 and b is 13
Run Code Online (Sandbox Code Playgroud)

为什么括号在后面的语句中有所不同"?",但之后的语句没有区别":"?你有什么主意吗?

Jon*_*ler 24

这个:

(a > b)? a++,b-- : a--,b++; 
Run Code Online (Sandbox Code Playgroud)

相当于:

((a > b) ? (a++, b--) : a--), b++;
Run Code Online (Sandbox Code Playgroud)

所以b总是递增,有时只是递减.没有方法来解析逗号操作符之间?以及:不是作为括号中的"等同于"表达的其它.但在此之后:,未加密码的逗号终止三元?:运算符并将增量保留为无条件执行.逗号运算符的优先级非常非常低.