如题所述
第1个回答 2023-10-20
运算符的结合方向(顺序)决定了计算的顺序。条件运算符(? :)的结合方向是从右到左,也即运算符的匹配顺序是从右往左的。
下面举例说明结合顺序从右到左的含义:
int a=1, b=3, c=2, d;d = a>b ? a : c>b ? c : b;
// 根据从右到左的结合顺序,则该表达式等价于d = (a>b ? a : (c>b ? c : b));
// 计算过程:
// 1、先算a>b,结果为0;
// 2、再算(c>b ? c : b),之后算c>b,结果为0,
// 3、所以最后结果为b的值,也即等于3
// 如果是从左到右的结合顺序,那么该表达式等价于d =((a>b ? a : c>b) ? c : b);
//计算过程:
// 1、先算a>b,结果为0;
// 2、再算c>b,结果为0;
// 3、所以d=b,结果为b的值,也即等于3
ps:虽然计算结果相同,但是计算的顺序是完全不同的。