整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制三种。
(1)十进制整常数:十进制整常数没有前缀。其数码为0~9。
以下各数是合法的十进制整常数:
237、-568、65535、1627。
以下各数不是合法的十进制整常数:
023(不能有前导0)、23D(含有非十进制数码)。
在程序中是根据前缀来区分各种进制数的,因此,在书写常数时,不要把前缀弄错,以免造成结果不正确。
(2)八进制整常数:八进制整常数必须以数字0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。
以下各数是合法的八进制数:
015(十进制数为13)、0101(十进制数为65)、0177777(十进制数为65535)。
以下各数不是合法的八进制数:
256(无前缀0)、03A2(包含了非八进制数码)、-0127(出现了负号)。
(3)十六进制整常数:十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。
以下各数是合法的十六进制整常数:
0X2A(十进制数为42)、0XA0(十进制数为160)、0XFFFF(十进制数为65535)。
以下各数不是合法的十六进制整常数:
5A(无前缀0X)、0X3H(含有非十六进制数码)。
(4)整型常数的后缀:在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0x FFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀 “L”或 “l”来表示的。
例如:
十进制长整常数:
158L(十进制数为158)、358000L(十进制数为358000)。
八进制长整常数:
012L(十进制数为10)、077L(十进制数为63)、0200000L(十进制数为65536)。
十六进制长整常数:
0X15L(十进制数为21)、0XA5L(十进制数为165)、0X10000L(十进制数为65536)。
长整数158L和基本整常数158在数值上并无区别,但对于158L,因为是长整型量,C编译系统将为它分配4字节存储空间;而对于158,因为其是基本整型,只分配2字节的存储空间。因此,在运算和输出格式上要予以注意,避免出错。
无符号数也可用后缀表示,整型常数的无符号数的后缀为 “U”或 “u”。
例如:
358u,0x38Au,235Lu均为无符号数。
前缀、后缀可同时使用,以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。
【例3.2】以下选项中可作为C语言合法整数的是 ( )。
A.10110B B.0386 C.0Xffa D.x2a2
此题主要考查整型常量的表示方法,答案为C。
【例3.3】以下程序运行后的输出结果是 ( )。
main()
{inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,c);
}
此题主要考查整型常量的表示方法及八进制和十六进制与十进制之间的转化,答案为:252137。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。