には何の影響もありません。私はthis answerに似たようなものがあると思っていましたが、その場合は式の結果を変数に代入していませんでした。私の場合、私はそれを割り当てていますが、表現のビットシフト部分は効果がありません。割り当て時のビットシフトは変数
unsigned leftmost1 = ((~0)>>20);
printf("leftmost1 %u\n", leftmost1);
戻り
leftmost1 4294967295
unsigned leftmost1 = ~0;
leftmost1 = leftmost1 >> 20;
printf("leftmost1 %u\n", leftmost1);
は私に
leftmost1 4095
私は何の影響も及ぼさない2行にロジックを分離する期待を与えるのに対し、なぜ結果があります違う?
@ M.M編集の簡潔さ – mickadoo
あなたの実装は、 '1'ビットをすでにすべてのビットが' 1'に設定されている符号付きの値にシフトしています。だから変化はありません。 '(~0u)>> 20' –