首頁 > 後端開發 > C++ > 為什麼在 C 中從空向量的大小中減去 1 會得到一個很大的正數而不是 -1?

為什麼在 C 中從空向量的大小中減去 1 會得到一個很大的正數而不是 -1?

Patricia Arquette
發布: 2024-12-10 19:35:15
原創
386 人瀏覽過

Why Does Subtracting 1 from an Empty Vector's Size in C   Result in a Large Positive Number Instead of -1?

C 中的向量大小與空向量的差異

考慮以下程式碼:

#include <vector>
#include <iostream>
using namespace std;
int main() {
    vector<int> value;
    cout << value.size() << endl;  // output 0
    cout << value.size() - 1 << endl;  // output 18446744073709551615
}
登入後複製

程式碼列印對於第一個cout,如預期所示指示空向量。但是,第二個 cout 列印一個很大的正數 (18446744073709551615)。為什麼它不是 -1,正如人們直觀所期望的那樣?

理解無符號型別

要理解這種行為,我們需要考慮向量大小的型別功能。 vector::size() 傳回 size_t 值,它是無符號資料型別。無符號資料型別只能表示正數和 0。負數不能用這些類型表示。

當我們從空向量的大小中減去 1 時,我們會得到預期的 -1 值。但是,由於 size_t 是無符號的,因此 -1 值會溢出到該資料類型可以表示的最大正值,在本例中為 18446744073709551615。

因此,第二個 cout 語句顯示此溢位的結果,而不是比預期的 -1 值。

以上是為什麼在 C 中從空向量的大小中減去 1 會得到一個很大的正數而不是 -1?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板