確定C 中布林資料類型的大小
每個C 程式設計師都會遇到稱為「bool」的基本資料類型,它代表true 或false 的邏輯值。使用此資料類型時出現的常見問題是其大小是否始終為 1 位元組。
sizeof(bool) 的標準定義
此問題的答案根據C 語言標準的定義,sizeof(bool) 是實現定義的 。這意味著布林值的具體大小可能會根據所使用的編譯器和平台的不同而有所不同。
具體來說,C 標準的§5.3.3/1 規定了char、signed char 和unsigned 的大小char 始終為1,但所有其他基本類型(包括bool)的大小都是實現定義的:
sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; the result of sizeof applied to any other fundamental type is implementation-defined.
此外,註腳69 明確指出「sizeof(bool) 不需要為1。例如,某些編譯器可能將 bool 實作為單位,而其他編譯器可能會出於相容性原因或為了優化特定架構上的效能而使用多個位元組。
因此,必須注意bool 的大小可能會並不總是1 字節,並且在為多個平台開發C 應用程式或使用可能對布爾值大小有不同假設的可互操作庫時要考慮這種可變性。
以上是C 中布林資料類型的大小始終為 1 位元組嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!