回答編集履歴
1
微修正
test
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
-2 (11111110) >> 1 → 127 (01111111)
|
12
12
|
```
|
13
13
|
|
14
|
-
C言語の標準規格では、符号付き整数型に対するシフト演算子 (`>>`など) が算術シフトなのか論理シフトなのかは規定されていません。ですから処理系によって算術シフトか論理シフトか
|
14
|
+
C言語の標準規格では、符号付き整数型に対するシフト演算子 (`>>`など) が算術シフトなのか論理シフトなのかは規定されていません。ですから処理系によって算術シフトか論理シフトかが違う可能性があります。実際は符号付き整数型に対するシフト演算は算術シフトとされる場合が圧倒的に多いです。VC++もそうです。
|
15
15
|
|
16
16
|
ですからご質問のコードでは、`int`型 (正確には`signed int`型) に対して算術シフトが実行されるためいくらシフトしても符号ビットが保存されることになります。
|
17
17
|
|