Ser*_*rov 1 c++ operator-precedence
运算符的+优先级高于<<C++,这意味着表达式a << b + c << d应该被评估为:
a << (b + c) << d
Run Code Online (Sandbox Code Playgroud)
但这没有意义.跟随时可以获得更多感觉
a << (b + (c << d))
Run Code Online (Sandbox Code Playgroud)
但是,这违反了的优先级+上<<,不是吗?编译器如何评估"确实有意义"的部分?
更新:在提出问题时,我认为编译器使用了第二个变体,这就是为什么我想知道编译器是如何进行此评估的.事实上,第一个被使用,它是正确的.
"有道理"是主观的.这就是为什么编译器不评估"sense",而是基于一组规则的语法.因为<<优先级较高(由这些规则集给出),它将表达式计算为
a << (b + c) << d
Run Code Online (Sandbox Code Playgroud)
如有疑问,请使用括号.
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |