整數字面

整數文字是表單的主要表示式

  • 十進位制字面

它是一個非零的十進位制數字(1,2,3,4,5,6,7,8,9),後跟零個或多個十進位制數字(0,1,2,3,4,5,6,7,8,9)

int d = 42;

  • 八進位制字面

它是數字零(0)後跟零個或多個八進位制數字(0,1,2,3,4,5,6,7)

int o = 052

  • 十六進位制字面

它是字元序列 0x 或字元序列 0X 後跟一個或多個十六進位制數字(0,1,2,3,4,5,6,7,8,9,a,A,b,B,c,C,d,D,e,E,f,F)

int x = 0x2a; int X = 0X2A;

  • binary-literal(自 C++ 14 起)

它是字元序列 0b 或字元序列 0B 後跟一個或多個二進位制數字(0,1)

int b = 0b101010; // C++14

整數字尾(如果提供)可能包含以下一個或兩個(如果兩者都提供,它們可以按任何順序出現:

  • unsigned-suffix(字元 u 或字元 U)

unsigned int u_1 = 42u;

  • long-suffix(字元 l 或字元 L)或 long-long-suffix(字元序列 ll 或字元序列 LL)(自 C++ 11 起)

以下變數也初始化為相同的值:

unsigned long long l1 = 18446744073709550592ull; // C++11
unsigned long long l2 = 18'446'744'073'709'550'592llu; // C++14
unsigned long long l3 = 1844'6744'0737'0955'0592uLL; // C++14
unsigned long long l4 = 184467'440737'0'95505'92LLU; // C++14

筆記

整數文字中的字母不區分大小寫:0xDeAdBaBeU 和 0XdeadBABEu 表示相同的數字(一個例外是 long-long-suffix,它是 ll 或 LL,從不 lL 或 Ll)

沒有負整數文字。諸如 -1 之類的表示式將一元減號運算子應用於由文字表示的值,這可能涉及隱式型別轉換。

在 C99 之前的 C 中(但不是在 C++中),不適合 long int 的未加十進位制的十進位制值允許使用 unsigned long int 型別。

當在#if 或#elif 的控制表示式中使用時,所有有符號整數常量的行為就像它們具有型別 std::intmax_t 一樣,並且所有無符號整數常量的行為就像它們具有型別 std::uintmax_t 一樣。