三元算子中逻辑条件的评估

时间:2016-01-10 15:38:44

标签: c++ ternary-operator

我不知道在三元运算符之前是否需要parens。

示例:

int a,b,d,e,f; // Some numbers
int l = ( a > b || d < e ) ? a : d;

肯定没问题,如果a>bd<e然后是l = a其他l = d。 我不确定是否

int l =  a > b || d < e ? a : d;

同样有效,那么更长的陈述呢?

int l = ( a > b || d ) && e > f ? a : d;

我想我的问题是:三元运算符总是将前面的任何内容视为逻辑表达式并对其进行评估,因此之前不需要parens吗?

1 个答案:

答案 0 :(得分:0)

你的第一个例子是正确的。

第二个陈述对第一个陈述同样有效。

你的第二个例子如下:
(...)具有最高优先级,><的优先级高于&&,其优先级高于优先级高于||的{​​{1}}。
所以

  • 如果?:的结果(d如果不等于0则转换为1)为a > b || d

  • 如果true的结果为e > f ,然后

  • true

  • 否则l=a