首頁 >後端開發 >C++ >在 C 中將負值賦給無符號變數時會發生什麼事?

在 C 中將負值賦給無符號變數時會發生什麼事?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-18 13:18:16637瀏覽

What Happens When You Assign a Negative Value to an Unsigned Variable in C  ?

將負值賦給無符號變數:會發生什麼事?

在C 中,如果您嘗試將負值賦給無符號變量,例如:

unsigned int nVal = 0;
nVal = -5;

行為可以是

解釋

依C 標準第4.7 節conv.integral:

「如果目標類型是無符號的,則結果value 是與來源整數一致的最小無符號整數(模2n,其中n 是用來表示無符號類型的位數)。結果相當於 (-5 2

32

) 或 4294967291。這是因為 -5 的補碼表示與 4294967291 的位元表示相同。 簡而言之,為無符號變數分配負值不會導致溢位或異常。相反,它會環繞為等效的正無符號值。

注意:

雖然此行為在 C 中定義良好,但並未被廣泛理解。使用無符號變數時,重要的是要意識到這種潛在的陷阱。

以上是在 C 中將負值賦給無符號變數時會發生什麼事?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn