C++(1):整数常量
目录
一、进制表示
二、后缀指定类型
三、示例与注意
四、总结表
一、进制表示
-
十进制(Decimal)
-
格式:无前缀,由数字
0-9
组成。 -
示例:
123
、42
。 -
注意:不能以
0
开头(否则会被视为八进制)。
-
-
八进制(Octal)
-
格式:以
0
为前缀,由数字0-7
组成。 -
示例:
0123
(十进制 83)、07
。 -
错误示例:
019
(包含非法数字9
)。
-
-
十六进制(Hexadecimal)
-
格式:以
0x
或0X
为前缀,由数字0-9
和字母A-F
(大小写不敏感)组成。 -
示例:
0x1A
(十进制 26)、0XFF
(十进制 255)。
-
二、后缀指定类型
整数常量可通过后缀组合 U
(无符号)和 L
(长整型)指定类型:
-
后缀规则:
-
U
或u
:表示无符号(unsigned
)。 -
L
或l
:表示长整型(long
)。 -
可组合使用,顺序和大小写任意,如
UL
、LU
、ul
等。 -
示例:
-
123U
(无符号整型) -
0x1AL
(长整型) -
42UL
(无符号长整型)
-
-
-
类型确定规则:
-
无后缀:根据值大小自动选择
int
、long
或long long
。 -
带
U
:选择unsigned int
、unsigned long
或unsigned long long
。 -
带
L
:选择long
或unsigned long
(若同时有U
)。 -
带
LL
(扩展):C++11 起支持long long
类型,后缀为LL
或ll
。
-
三、示例与注意
-
示例:
-
十进制:
123
→int
(若值在int
范围内)。 -
八进制:
042
→ 十进制 34,类型为int
。 -
十六进制:
0x2A
→ 十进制 42,类型为int
。 -
后缀组合:
123ULL
→ 无符号长整型(unsigned long long
)。
-
-
注意:
-
八进制陷阱:避免误用
0
前缀(如012
是八进制,非十进制 12)。 -
后缀可读性:建议使用大写后缀(如
UL
而非ul
),避免与数字1
混淆。 -
负号问题:负号(
-
)是运算符,非常量的一部分。例如,-123U
等价于对123U
取负,结果按无符号规则转换。 -
类型大小依赖实现:
long
和int
的大小由编译器和平台决定(如 32/64 位系统)。
-
四、总结表
进制 | 前缀 | 合法字符 | 示例 | 后缀组合 | 类型推断规则 |
---|---|---|---|---|---|
十进制 | 无 | 0-9 | 42 | U 、L 、UL 等 | 最小能容纳值的带符号类型 |
八进制 | 0 | 0-7 | 0123 | 同上 | 同上 |
十六进制 | 0x/0X | 0-9 、A-F/a-f | 0x1F | 同上 | 同上 |