首頁 >後端開發 >C++ >為什麼「size() - 1」對於空 C 向量會回傳一個大的正數?

為什麼「size() - 1」對於空 C 向量會回傳一個大的正數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-10 06:30:14370瀏覽

Why Does `size() - 1` Return a Large Positive Number for Empty C   Vectors?

向量大小異常:為什麼空向量的Size() - 1 不是-1

給定的程式碼片段演示了一種特殊的行為C向量。當向量為空時(即 size() == 0),從其​​大小中減去 1 將傳回一個很大的正數,而不是預期的 -1。

原因

理解這種行為的關鍵在於vector::size()的資料型態。它被定義為size_t,一個無符號整數型別。與有符號整數不同,無符號整數不能表示負值。

第二個 cout:發生了什麼事?

當您從空向量的大小(即 0)中減去 1 時,結果會溢出並回繞到無符號整數的最大可能值。這是因為無符號整數使用所有位元來表示正值,並且當它們溢出時,它們會從 0 開始。

範例

在範例程式碼中,值.size()為0,value.size() - 1溢到18446744073709551615 位元,即無符號64 位元整數的最大值(2^64 - 1)。

以上是為什麼「size() - 1」對於空 C 向量會回傳一個大的正數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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