整數字面
整數文字是表單的主要表示式
- 十進位制字面
它是一個非零的十進位制數字(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 一樣。