gpt4 book ai didi

c++ - 与 ? 一起使用时的逗号运算符优先级: operator

转载 作者:IT老高 更新时间:2023-10-28 21:37:28 24 4
gpt4 key购买 nike

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

    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

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

    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

为什么括号对"?"之后的语句有区别,而对":"之后的语句没有区别?你有什么想法吗?

最佳答案

这个:

(a > b)? a++,b-- : a--,b++; 

相当于:

((a > b) ? (a++, b--) : a--), b++;

so b 总是递增,只是有时递减。没有办法解析 ?: 之间的逗号运算符,除非在“等价于”表达式中加上括号。但是在 : 之后,未加括号的逗号终止了三元 ?: 运算符并将增量保留为无条件执行。逗号运算符的优先级非常非常低。

关于c++ - 与 ? 一起使用时的逗号运算符优先级: operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16854007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com