回答編集履歴
1
少し追記
test
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
`(num != (num >>= 1) << 1)`のような、「代入した変数を別の場所で参照するコード」は、C++では評価順が決まっておらず、**未定義の動作**となります。
|
1
|
+
`(num != (num >>= 1) << 1)`のような、「代入した変数を、(副作用完了点を超えない)同じ式の別の場所で参照するコード」は、C++では評価順が決まっておらず、**未定義の動作**となります。
|
2
2
|
|
3
3
|
素直に、`num`のシフトとビットごとの評価を別な式で行いましょう。
|