|
整数文本以数字开头,没有小数部分或指数。 你可以指定十进制、二进制、八进制或十六进制形式的整数文本。 可以选择使用后缀将整数文本指定为无符号类型以及 long 类型或 long long 类型。
如果没有前缀或后缀,编译器将为整型文本值赋予 int 类型(32 位),前提是该值符合该类型,否则将赋予 long long 类型(64 位)。
要指定十进制整型文本,请以非零数字作为规范的开头。 例如:
C++
int i = 157; // Decimal literal
int j = 0198; // Not a decimal number; erroneous octal literal
int k = 0365; // Leading zero specifies octal literal, not decimal
int m = 36'000'000 // digit separators make large values more readable
要指定八进制整型文本,请以 0 作为规范的开头,后跟 0 到 7 之间的一系列数字。 在指定八进制文本时,使用数字 8 和 9 是错误做法。 例如:
C++
int i = 0377; // Octal literal
int j = 0397; // Error: 9 is not an octal digit
要指定十六进制整型文本,请以 0x 或 0X 作为规范的开头(“x”的大小写形式并不重要),后跟 0 到 9 以及 a(或 A)到 f(或 F)之间的一系列数字。 十六进制数字 a(或 A)到 f(或 F)表示介于 10 和 15 之间的值。 例如:
C++
int i = 0x3fff; // Hexadecimal literal
int j = 0X3FFF; // Equal to i
若要指定无符号类型,请使用 u 或 U 后缀。 若要指定 long 类型,请使用 l 或 L 后缀。 要指定 64 位整型类型,请使用 LL 或 ll 后缀。 i64 后缀仍受支持,但不建议使用。 它是 Microsoft 专用的,不可移植。 例如:
C++
unsigned val_1 = 328u; // Unsigned value
long val_2 = 0x7FFFFFL; // Long value specified
// as hex literal
unsigned long val_3 = 0776745ul; // Unsigned long value
auto val_4 = 108LL; // signed long long
auto val_4 = 0x8000000000000000ULL << 16; // unsigned long long
数字分隔符:可以使用单引号字符(撇号)分隔较大数字中的位值,使它们更易于人类阅读。 分隔符不会对编译产生任何影响。
C++
long long i = 24'847'458'121;
|
|