【发布时间】:2013-04-11 15:44:06
【问题描述】:
运算符 + 在 C++ 中的优先级高于 <<,这意味着表达式 a << b + c << d 应计算为:
a << (b + c) << d
但那没有意义。跟随会更有意义
a << (b + (c << d))
但这违反了+ 优先于<<,不是吗?编译器如何评估“是否有意义”部分?
更新:在问这个问题时,我认为编译器使用了第二个变体,这就是为什么我想知道编译器是如何进行此评估的。事实上,使用了第一个并且是正确的。
【问题讨论】:
-
link says + has higher precedence then << 记住
+是数学运算符,而 -
编译器没有任何意义,他们只是编译
-
除了大卫的回答/和我的第一条评论,--例如:在任何编程语言中,你都找不到
+比*具有更高的优先级,乘法编译器不会中断规则。 -
为什么不从左到右:
(((a << b) + c) << d)?