Bjarne Stroustrup 的觀察結果是「使用無符號而不是int 來多獲得一位來表示正整數幾乎從來都不是一個好主意」引起了人們對將size_t 設為無符號的決定的擔憂。
最初,size_t 是無符號的,以適應具有 16 位元指標的體系結構,例如 DOS 系統。為了防止字串大小限制,C 標準強制要求 ptrdiff_t(size_t 的帶符號副本)實際上為 17 位元。
雖然這些歷史原因可能仍然適用於嵌入式系統,對於現代 32 位元和 64 位元程式設計來說,情況就不那麼重要了。在這些環境中,對數字使用無符號類型沒有實際優勢,並且由於C/C 隱式轉換規則(例如,其中string("Hi").length()
使 size_t 無符號的決定不是一個錯誤,而是針對當時有限系統的實際選擇。然而,在現代程式設計實踐中,通常建議盡量減少在介面和數字中使用無符號整數,除非 typedef int MyType 的自描述性是有益的特定情況。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3