返回信息流请问大家,
a<b?a:c<d?c:d应该怎么看?
是a<b?a:(c<d?c:d)
还是(a<b?a:c)<d?c:d呢?
我对照运算符优先级的表没看出来。
引申为一道题,a=1,b=2,c=3,d=4
那这个式子的结果到底应该是1还是4啊?
谢谢大家!
这是一条镜像帖。来源:北邮人论坛 / cpp / #86962同步于 2015/5/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
a<b?a:c<d?c:d应该怎么看?
singingwheat
2015/5/6镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不光是优先级precedence,还有结合性associativity
【 在 singingwheat 的大作中提到: 】
: 请问大家,
: a<b?a:c<d?c:d应该怎么看?
: 是a<b?a:(c<d?c:d)
: ...................
优先级:
单目>双目>三目
所以 a<b c<d 这两个式子是不可能拆分运算的
(a<b) ? a : (c<d) ? c : d
又条件运算符满足右结合律
因此分析图:
式子可能结果
(a<b) ? a //先计算(a<b) 的值,真则取a;否则计算下一步计算右边
: (c<d) ? c //同理
: d //取d
最后结果就三可能:a、c、d
楼主懂了吗
利用右结合写 x < 0 ? 0 : x > 255 ? 255 : x 这种还是挺常见的吧,真正坑的是把这句子写到php这种问号冒号左结合的语言里…
通过『我邮2.0』发布
【 在 tttst 的大作中提到: 】
: 应该揪出这是谁写的,然后抽他。。。
还好啦。 a?b:c?d:e?f:g的意思和
if (a) {b} else if (c) {d} else if (e) {f} else {g}
是一样的,只不过是表达式而不是语句而已。
来自「北邮人论坛手机版」