簡體   English   中英

關於C ++中unsigned char類型的大小

[英]About the size of unsigned char type in C++

標准C ++ [3.9.1-1]說明了這一點

對於無符號字符類型,值表示的所有可能位模式表示數字。

標准[18.3.2.4-(注釋197)]也表示無符號字符的最大值等於C中的UCHAR_MAX ,在C標准[5.2.4.2.1]中定義為255。 那么這是否意味着C ++中unsigned char類型的大小恰好是8位?

從C11 5.2.4.2.1開始

下面給出的值應替換為適用於#if預處理指令的常量表達式。 此外,除了CHAR_BIT和MB_LEN_MAX之外,以下內容應替換為與根據整數提升轉換的對應類型的對象的表達式具有相同類型的表達式。 它們的實現定義值的大小(絕對值)應等於或大於顯示的值,並帶有相同的符號。

(強調我的)

因此,該標准定義了UCHAR_MAX至少需要為255但可能大UCHAR_MAX值。

我們對尺寸的保證是:

sizeof(char) = 1 and sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

至少數據類型的簽名版本必須能夠容納:

  • char [-127, 127]
  • short [-32767, 32767]
  • int [-32767, 32767]
  • long [-2147483647, 2147483647]
  • long long [-9223372036854775807, 9223372036854775807]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM