C++ 三元算子逻辑条件的评价

C++ 三元算子逻辑条件的评价,c++,ternary-operator,C++,Ternary Operator,我不知道在三元运算符之前是否需要 例如: int a,b,d,e,f; // Some numbers int l = ( a > b || d < e ) ? a : d; 同样有效,那么更长的语句呢 int l = ( a > b || d ) && e > f ? a : d; 我想我的问题是:三元运算符总是把它前面的任何东西都当作一个逻辑表达式来处理,并对其求值,因此它前面不需要parens?你的第一个例子是正确的 第二种说法与第一种说法同样有

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

例如:

int a,b,d,e,f; // Some numbers
int l = ( a > b || d < e ) ? a : d;
同样有效,那么更长的语句呢

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

我想我的问题是:三元运算符总是把它前面的任何东西都当作一个逻辑表达式来处理,并对其求值,因此它前面不需要parens?

你的第一个例子是正确的

第二种说法与第一种说法同样有效

您的第二个示例如下:
(…)
的优先级最高,
的优先级高于代码&/code的优先级高于代码| |/code的优先级高于代码?:/code.br So/p 保险商实验室 LIP如果codea>b | | d(如果不同于0,则d转换为1)的结果为
true

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

  • l=a

  • 否则
    l=b


  • 额外参数不需要计算时间,但可以节省大量维护时间(((解析(冗余括号))(阅读时)(可能会令人困惑))。解析额外参数比调试丢失更容易。但是是的,这是有限制的。所以“是”但无论如何请使用parens。必须问这个问题的事实表明,优先顺序并不明确,应该由帕伦斯强制执行。感谢您的解释,您可能希望将评论者的优先表添加到我的问题中,以使您的答案完整@是的,你可能是对的。我有一个模糊的概念,但作为一个没有经过正式培训的业余编码爱好者,我不知道该去哪里寻找它,多亏了这个问题,我现在知道了。希望它能帮助像我这样的业余爱好者。
    int l = ( a > b || d ) && e > f ? a : d;