向量大小異常:為什麼空向量的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中文網其他相關文章!