c语言中的条件运算符为何不是=>?

如题所述

第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:虽然计算结果相同,但是计算的顺序是完全不同的。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网