首頁 後端開發 C++ 為什麼 `vector.size() - 1` 在 C 中不回傳 -1 ?

為什麼 `vector.size() - 1` 在 C 中不回傳 -1 ?

Dec 02, 2024 pm 07:21 PM

Why Doesn't `vector.size() - 1` Return -1 in C  ?

C 中的向量大小異常

在 C 中,向量容器的 size() 方法傳迴向量中元素的數量。然而,當向量為空時,會出現令人費解的行為,如以下程式碼片段所示:

#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
}
登入後複製

為什麼第二個輸出不是 -1?

第一個 cout 語句正確印出 0,表示向量為空。然而,第二個語句令人驚訝地輸出了一個非常大的正數,而不是預期的 -1。發生這種情況是因為 vector::size() 傳回 size_t 類型的無符號整數。顧名思義,無符號整數不能表示負數。

因此,當將 size_t 值從自身中減去時,它實際上會繞回該類型的最大可表示數字。在這種情況下,size_t 通常是一個 64 位元整數,因此它可以容納的最大值是 18446744073709551615。該值是作為第二個 cout 語句的輸出打印的值。

期間發生的情況第二次計算?

以下計算順序解釋了第二個 cout 背後的行為:

  1. value.size() 傳回 0,一個 size_t 類型的無符號整數。
  2. value.size() - 1 計算 0 - 1,結果是18446744073709551615(最大可表示數size_t).
  3. cout 將此最大值列印為 1844674505.

以上是為什麼 `vector.size() - 1` 在 C 中不回傳 -1 ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

c語言函數格式字母大小寫轉換步驟 c語言函數格式字母大小寫轉換步驟 Mar 03, 2025 pm 05:53 PM

c語言函數格式字母大小寫轉換步驟

c語言函數返回值的類型有哪些?返回值是由什麼決定的? c語言函數返回值的類型有哪些?返回值是由什麼決定的? Mar 03, 2025 pm 05:52 PM

c語言函數返回值的類型有哪些?返回值是由什麼決定的?

Gulc:從頭開始建造的C庫 Gulc:從頭開始建造的C庫 Mar 03, 2025 pm 05:46 PM

Gulc:從頭開始建造的C庫

c語言函數的定義和調用規則是什麼 c語言函數的定義和調用規則是什麼 Mar 03, 2025 pm 05:53 PM

c語言函數的定義和調用規則是什麼

C標準模板庫(STL)如何工作? C標準模板庫(STL)如何工作? Mar 12, 2025 pm 04:50 PM

C標準模板庫(STL)如何工作?

c語言函數返回值在內存保存在哪裡? c語言函數返回值在內存保存在哪裡? Mar 03, 2025 pm 05:51 PM

c語言函數返回值在內存保存在哪裡?

distinct用法和短語分享 distinct用法和短語分享 Mar 03, 2025 pm 05:51 PM

distinct用法和短語分享

如何有效地使用STL(排序,查找,轉換等)的算法? 如何有效地使用STL(排序,查找,轉換等)的算法? Mar 12, 2025 pm 04:52 PM

如何有效地使用STL(排序,查找,轉換等)的算法?

See all articles