> 32) C 語言中的 Return 1:深入研究右移運算子行為與未定義行為? " />
對右移運算子(1 >> 32) 的好奇
在使用右移運算子(>>) 時C 程式碼中,通常假設移位大於或等於操作數寬度的值將導致零,但是,如提供的程式碼片段所示,這種假設可能會導致意外行為。移動b 位,當使用參數(1, 32) 呼叫時,它令人驚訝地返回1 而不是預期的0。標準中所描述的未定義行為,它的計算結果為0。是因為64 大於32,保證移位會產生0。為5 或6 位元(取決於架構),有效地截斷任何大於或等於32 或63 的移位計數。
這突顯了將32 位元整數移位≥32 的不可移植性,因為結果可能會因底層硬體實現而異。
以上是為什麼 (1 >> 32) 在 C 中返回 1:深入探討右移運算子行為和未定義行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!