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
总是递增,有时只是递减.没有方法来解析逗号操作符之间?
以及:
不是作为括号中的"等同于"表达的其它.但在此之后:
,未加密码的逗号终止三元?:
运算符并将增量保留为无条件执行.逗号运算符的优先级非常非常低.
归档时间: |
|
查看次数: |
496 次 |
最近记录: |