我不知道在三元运算符之前是否需要parens。
示例:
int a,b,d,e,f; // Some numbers
int l = ( a > b || d < e ) ? a : d;
肯定没问题,如果a>b
或d<e
然后是l = a
其他l = d
。
我不确定是否
int l = a > b || d < e ? a : d;
同样有效,那么更长的陈述呢?
int l = ( a > b || d ) && e > f ? a : d;
我想我的问题是:三元运算符总是将前面的任何内容视为逻辑表达式并对其进行评估,因此之前不需要parens吗?
答案 0 :(得分:0)
你的第一个例子是正确的。
第二个陈述对第一个陈述同样有效。
你的第二个例子如下:
(...)
具有最高优先级,>
和<
的优先级高于&&
,其优先级高于优先级高于||
的{{1}}。
所以
如果?:
的结果(d如果不等于0则转换为1)为a > b || d
和强>
如果true
的结果为e > f
,然后强>
true
否则l=a
。