接线员 +
优先级高于 <<
在 C++ 中,这意味着表达式 a << b + c << d
应评估为:
a << (b + c) << d
但这没有意义。跟随可以获得更多意义
a << (b + (c << d))
但这违反了 +
的优先级在 <<
,不是吗?编译器如何评估“有意义”部分?
更新: 在问这个问题时,我认为编译器使用了第二个变体,这就是为什么我想知道编译器是如何得出这个评估的。事实上,第一个被使用,它是正确的。
最佳答案
“有意义”是主观的。这就是为什么编译器不评估“意义”,而是评估基于一组规则的语法。因为<<
具有更高的优先级(由那些规则集给出),它将表达式计算为
a << (b + c) << d
如有疑问,请使用括号。
关于c++ - 令人困惑的运算符优先级 : a << b + c << d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953184/