《C++ Primer》第五版 375 頁單詞計數示例使用 size_t 作為計數器類型。有讀者質疑是否應改用 unsigned int。實際上,對於單詞計數這類場景,兩者皆可,關鍵在於理解它們的語義差異。
| 特性 | size_t | unsigned int |
|---|---|---|
| 語義 | 標準庫定義的「對象大小/索引」類型,保證能容納最大對象字節數 | 標準無符號整數,通常 32 位 |
| 可移植性 | 64 位系統上為 64 位,32 位系統上為 32 位 | 固定 32 位(視實現而定) |
| 適用場景 | 容器大小、數組索引、內存分配大小 | 一般無符號整數運算 |
單詞計數上限遠小于 UINT_MAX(約 40 億),即便長篇小說加字典總詞數也不到百萬級。因此 unsigned int 完全足夠,但 size_t 更符合標準庫慣例(如 vector::size() 返回類型),且避免隱式轉換警告。書中選用 size_t 是為了培養正確的類型習慣,而非因為數值會溢出。