2014-01-21 34 views
3

我正在閱讀C++ Primer,遇到一個包含C++數據類型最小保證大小的表,因爲它寫的是不保證bool的最小大小。
有什麼特別的原因嗎?爲什麼沒有最小尺寸的bool數據類型?

+2

它不是重複的,我不是問爲什麼是布爾1字節的大小,我只是問爲什麼沒有布爾的最小尺寸。 –

+0

*所有*數據類型至少有一個字節。 –

+0

@KeithThompson所有數據類型都是1字節自動保證,因爲最小的可尋址單元的內存是1字節。 –

回答

2

理論上,布爾的大小隻需要一位,但在內存分配中,類型需要與其他類型兼容,並且填充位有時用於不同的編譯器和計算機體系結構,以便最小的膠囊存儲任何數據類型是一個字節。

Why is a boolean 1 byte and not 1 bit of size?

按照最後的評論,我應該從維基百科的文章字節加上這句話:

字節/baɪt/是在計算和電信數字信息的單元最常見的是由八位。從歷史上看,字節是用於在計算機中編碼單個字符文本的位數[1] [2],因此它是許多計算機體系結構中最小的可尋址內存單元。

+2

不要忘記,'bool'類型的變量也必須是可尋址的(例如使用操作符'&'的地址),這也意味着它必須至少是系統的最小可尋址單元,通常是一個字節。 –

+0

在C++中,「字節」與「char」同義,並被定義爲最小的可尋址內存單元。 – Casey

+3

您應該引用C++和/或C標準的相關部分,因爲在前者中找不到保證「bool」的一個字節的任何內容。問題是爲什麼它*不*保證的最小尺寸。 – juanchopanza