整数量可以表示为十进制(Decimal)、16进制(Hexadecimal)和8进制(Octal)数。
<整数量>定义为:
<十进制量> 或
<十六进制量> 或
<八进制量>
<十进制量>定义为:
<十进制数值>[<整型后缀>]
<十六进制量>定义为:
<十六进制数值>[<整型后缀>]
<八进制量>定义为:
<八进制数值>[<整型后缀>]
<整型后缀>定义为以下之一:
SB sb S s I i L l UB ub US us U u UI ui UL ul
在整型数值的后面可以带一个整型后缀,用于限制该数值的类型;无后缀的整型数值缺省为int型,即32位带符号整数。整型后缀同数值类型的关系在以下表格中列出:
后 缀
类型
SB或sb
byte
S或s
short
I或i
int
L或l
long
UB或ub
ubyte
US或us
ushort
UI、U、ui或u
uint
UL或ul
ulong
十进制整数值要么是ASCII字符0,表示整数0,要么是一个非0的ASCII数字,后面可选择地跟一些ASCII数字0 ~ 9。十进制整数的形式化定义如下:
<十进制数值>定义为:
0 或
<非零十进制数字>{<十进制数字>}
<非零十进制数字>定义为:
1 2 3 4 5 6 7 8 9
<十进制数字>定义为:
0 或
<非零十进制数字>
十六进制数值是以ASCII字符0x或0X开头,后面紧跟1个或几个十六进制数字,可以表示正整数、0或负整数。十六进制数字中大于9的数字分别采用ASCII字母a ~ f 或者A ~ F来表示,字母的大小写与值无关。十六进制整数的形式化定义如下:
<十六进制数值>定义为:
0x<十六进制数字>{<十六进制数字>}
0X<十六进制数字>{<十六进制数字>}
<十六进制数字>定义为以下之一:
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
八进制数值是由ASCII数字0后跟1个或几个ASCII数字0 ~ 7构成,表示正整数、0或负整数。八进制数的定义如下:
<八进制数值>定义为:
0<八进制数字>{<八进制数字>}
<八进制数字>定义为以下之一:
0 1 2 3 4 5 6 7
八进制数值至少包含2个数字;0总是被认为是十进制数,0、00和0x0表示相同的数值0。
在进行词法分析的过程中,还应验证数值的合法性。例如,320sb就不是一个合法的整数量,因为byte型的数值范围是-128~127,而320不在之内。下表列出了各整数类型的取值范围:
类型
十进制数值范围
十六进制数值范围
八进制数值范围
byte
-128 ~ 127
0x80SB ~ 0x7FSB
0200SB ~ 0177SB
ubyte
0 ~ 255
0x00 ~ 0xffUB
0 ~ 0377UB
short
-32 768 ~ 32 767
0x8000S ~ 0x7FFFS
0100000S ~ 077777S
ushort
0 ~ 65 535
0x0000 ~ 0xFFFFUS
0 ~ 0177777US
int
-2147483648 ~ 2147483647
0x80000000 ~ 0x7fffffff
020000000000~017777777777
uint
0 ~ 4294967295
0x00000000ui~ 0xffffffffui
0 ~ 037777777ui
long
223372036854775808~ 9223372036854775807
0x8000000000000000L ~ 0x7fffffffffffffffL
01000000000000000000000L~
0777777777777777777777L
ulong
0 ~
18446744073709551615
0 ~
0xffffffffffffffffUL
0 ~
01777777777777777777777ul