整数字面量是表示整数常量的数字序列。可选前缀设置非十进制基数:二进制为 0b
或 0B
,八进制为 0
、0o
或 0O
,十六进制为 0x
或 0X
。单个的 0
被认为是十进制的 0。在十六进制字面量中,字母 a
到 f
和 A
到 F
表示值 10
到 15
。
为了可读性,下划线 _
可以出现在基本前缀之后或连续数字之间,这样的下划线不会改变字面量的值。
整数字面量 = 十进制整数字面量 | 二进制整数字面量 | 八进制整数字面量 | 十六进制整数字面量 .
十进制整数字面量 = "0" | ( "1" … "9" ) [ [ "_" ] 十进制数字 ] .
二进制整数字面量 = "0" ( "b" | "B" ) [ "_" ] 二进制数字 .
八进制整数字面量 = "0" [ "o" | "O" ] [ "_" ] 八进制数字 .
十六进制整数字面量 = "0" ( "x" | "X" ) [ "_" ] 十六进制数字 .
十进制数字 = 十进制数字 { [ "_" ] 十进制数字 } .
二进制数字 = 二进制数字 { [ "_" ] 二进制数字 } .
八进制数字 = 八进制数字 { [ "_" ] 八进制数字 } .
十六进制数字 = 十六进制数字 { [ "_" ] 十六进制数字 } .
42
4_2
0600
0_600
0o600
0O600 // 第二个字符是大写字母 O
0xBadFace
0xBad_Face
0x_67_7a_2f_cc_40_c6
170141183460469231731687303715884105727
170_141183_460469_231731_687303_715884_105727
_42 // 一个标识符,而不是整数字面量
42_ // 无效:_ 必须以连续数字分隔
4__2 // 无效:一次只能有一个 _
0_xBadFace // 无效:_ 必须将连续的数字分开