將負值賦給無符號變數:會發生什麼事?
在C 中,如果您嘗試將負值賦給無符號變量,例如:
unsigned int nVal = 0; nVal = -5;
行為可以是
解釋
依C 標準第4.7 節conv.integral:
「如果目標類型是無符號的,則結果value 是與來源整數一致的最小無符號整數(模2n,其中n 是用來表示無符號類型的位數)。結果相當於 (-5 2
32) 或 4294967291。這是因為 -5 的補碼表示與 4294967291 的位元表示相同。 簡而言之,為無符號變數分配負值不會導致溢位或異常。相反,它會環繞為等效的正無符號值。
注意:雖然此行為在 C 中定義良好,但並未被廣泛理解。使用無符號變數時,重要的是要意識到這種潛在的陷阱。
以上是在 C 中將負值賦給無符號變數時會發生什麼事?的詳細內容。更多資訊請關注PHP中文網其他相關文章!