Skip to content

整型字面量 ​

#纯右值

直接写在代码中的整数常量,在编译期确定类型和值。

语法形式 ​

cpp
整数基数字面量 + [可选整型后缀]

基数形式 ​

进制写法示例
十进制无前缀42
八进制0 开头052
十六进制0x / 0X 开头0x2A
二进制 #cpp140b / 0B 开头0b101010

TIP

#cpp14 数字中间可以插入单引号 ' 作为分隔符(编译器会忽略,仅用于提高可读性)。

整型后缀 ​

整型字面量可以添加后缀,用于指示期望的类型:

后缀含义
无默认根据范围从 int → long → long long 推断
u / U无符号
l / Llong 长整型后缀
ll / LL #cpp11long long 长长整型后缀
z / Z #cpp23size_t 的最小匹配类型

后缀可以组合出现,如 ul、llu、zu,顺序不影响意思。

字面量的类型推导规则 ​

字面量的真实类型由 值范围 + 后缀组合 决定:

没有后缀时:

  • 十进制基数:尝试匹配 int → long → long long
  • 二/八/十六进制:尝试匹配 int → unsigned int → long → unsigned long → long long → unsigned long long

加 u / U 后缀:尝试匹配 unsigned int → unsigned long → unsigned long long

加 l / L 后缀:尝试匹配 long → unsigned long → long long → unsigned long long

加 ul / UL 后缀:尝试匹配 unsigned long → unsigned long long

加 ll / LL 后缀:尝试匹配 long long → unsigned long long

加 ull / ULL 后缀:尝试匹配 unsigned long long

加 z / Z 后缀:尝试匹配 std::size_t

其它重要规则 ​

  • 大小写不敏感:
    • 十六进制数字(a - f)大小写无差异
    • 后缀字符大小写无差异
  • 没有负数字面量:-1 不是一个负数字面量,而是对 1 应用一元 - 运算符。