5

の場合、C での評価の順序はx<<y>>z? (x<<y)>>z左から右への結合性のためですか?

編集 標準がそれについて何を伝えているかを知る必要があり、特定のコンパイラの検査によって何が起こっているかを推測する必要はありません。

4

5 に答える 5

5

はい、>><<は連想のままで、同じ優先順位であるため、x << y >> zと同等(x << y) >> zです。

于 2012-09-24T14:10:40.417 に答える
3

オンライン C 2011 ドラフト標準 (N1570)

6.5.7 ビットシフト演算子

構文

1     シフト式:
          加算式
          シフト式<<加算式
          シフト式>>加算式

次のように、構文は両方の演算子が左結合であることを示します。

    x << y >> z
    | | | | | | | |
    +-------- + ------+ | | |
            | | | | | |
            V | Ⅴ
      シフト式        >>   加算式

于 2012-09-24T15:10:08.713 に答える
2

はい、 << と >> 演算子は同じ優先順位を持ち、左結合であるため、あなたは正しいです。

于 2012-09-24T14:12:10.577 に答える
1

<<とは>>同じレベルにあり、方向は左から右です。

そうなる(x<<y)>>z

詳細については.. http://msdn.microsoft.com/en-us/library/2bxt6kc4%28v=vs.71%29.aspx

于 2012-09-24T14:11:39.413 に答える
-1

はい、そうですがx<<yy>>zコンパイラがx<<y>>z. 私はずっとビットごとの操作を使用していませんが、よく覚えていれば、それは私が言ったことです。お役に立てば幸いです。

于 2012-09-24T14:12:39.490 に答える