目录
一、进制表示
-
十进制(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 |
同上 | 同上 |