【发布时间】:2012-09-24 14:08:54
【问题描述】:
在 x<<y>>z 的情况下,C 中的评估顺序是什么?是 (x<<y)>>z 吗,因为从左到右的关联性?
编辑 需要知道标准说明了什么,而不是通过检查特定编译器来猜测发生了什么。
【问题讨论】:
-
你试过了吗?你得到了什么?
-
@AurelioDeRosa:在这里试过:msdn.microsoft.com/en-us/library/2bxt6kc4.aspx。但我对这行感到困惑:“操作顺序不是由语言定义的”
-
@AurelioDeRosa:即使您尝试过,您如何知道/证明您的编译器符合标准?
-
@VladLazarenko 更糟糕的是,它可能完全符合标准,并且表达式调用了未定义或实现定义的行为。
-
注意:如果您不确定顺序,总是使用括号。即使你弄清楚它的作用,下一个开发者也会面临同样的问题。
标签: c evaluation