x << y >> z C中的评价顺序

pho*_*xis 5 c evaluation

在C的情况下,评估的顺序是什么x<<y>>z?是吧(x<<y)>>z,因为从左到右的联系?

编辑 需要知道标准告诉它的内容,而不是通过检查特定编译器来猜测是什么.

小智 5

是的,>>并且<<保持关联且具有相同的优先级,因此x << y >> z等同于(x << y) >> z.


Joh*_*ode 3

在线 C 2011 标准草案 (N1570)

6.5.7 按位移位运算符

句法

1     移位表达式:
          加法表达式
          移位表达式<<加法表达式
          移位表达式>>加法表达式

语法表明两个运算符都是左结合的,如下所示:

    x << y >> z
    | | | |
    +------ + ------+ | |
            | | |
            V | V
      移位表达式        >>   加法表达式