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 | 同上 | 同上 |
