2.3 整型数据

在实际考试中,有时会遇到这样的问题:求一些整数的某种运算结果,如计算1~100所有奇数的和。用C语言来实现的话,就要用到整型数据。整型数据包括整型变量和整型常量。

2.3.1 整型变量

1 整型变量的分类

整型变量的基本类型说明符为 int。由于不同的编译系统或计算机系统对整型变量所占用的字节数有不同的规定,因此根据在VC6.0中各整型变量占用内存字节数的不同,可以将整型变量分为以下3类。

●基本整型:用int表示,在内存中占4个字节。

●短整型:用short int或short表示,在内存中占2个字节。

●长整型:用long int或long表示,在内存中占4个字节。

为了增加变量的取值范围,还可以将变量定义为“无符号”型。以上3类都可以加上修饰符unsigned,以指定是“无符号数”。如果加上修饰符signed,则被指定为“有符号数”。如果既不指定unsigned,也不指定signed,则系统默认为有符号数(signed)。各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故其不能表示负数。

2 整型变量占用内存字节数与值域

上述各类型整型变量占用的内存字节数因系统而异。在VC6.0中,一般用4个字节表示一个int型(基本整型)变量,用2个字节表示一个short型(短整型)变量,用4个字节表示一个long型(长整型)变量。

表2-1列出了各类整型变量所分配的内存字节数及可以表示的数的取值范围。

表2-1 整型变量的内存占用

方括号内的部分是可以不输入的。例如,signed int等价于int,所以,一般情况下signed都不输入。

3 整型变量的定义

整型变量定义的一般形式为:

类型说明符 变量名1[,变量名2…] ;

说明

允许在一个类型说明符后说明多个相同类型的变量。类型说明符与变量名之间至少用一个空格隔开。当定义多个变量时,两个变量名之间用逗号“,”隔开。

最后一个变量名之后必须以分号“;”结尾。

变量说明必须放在变量使用之前,必须遵循“先说明,后使用”的原则,一般放在函数体的开头部分。

例如

inta,b,c;  /*a,b,c为整型变量*/

longd,e;   /*d,e为长整型变量*/

unsignedf,g; /*f,g为无符号整型变量*/

2.3.2 整型常量

学习提示

【熟记】整型常量的表示方法

整型常量即整常数。按不同的进制,整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。

① 十进制数表示法

十进制整型常量没有前缀,其数码为0~9。

例如

237、-568、65535和1627都是合法的十进制整常量。

② 八进制数表示法

八进制整型常量以0作为前缀,其数码为0~7。

例如

014(十进制为12)和0102(十进制为66)都是合法的八进制整型常量。014表示八进制数14,即(14)8,其值为 1×81+4×80,即等于十进制数12。

③ 十六进制数表示法

十六进制整型常量以0X或0x作为前缀,其数码为0~9和A~F(或a~f)。

例如

0X2A(十进制为42)、0XA0(十进制为160)和0XFFFF(十进制为65535)都是合法的十六进制整型常量。0X2A表示十六进制数2A,转换为十进制则是:(2A)16=2×161+A×160=2×16+10×1=42。

程序中是根据前缀来区分各种进制数的,因此在书写常量时不要把前缀弄错,否则会出现不正确的结果。

在C程序中,只有十进制数可以是负数,而八进制和十六进制数只能是无符号数。

整型常量分为短整型(short int)、基本整型(int)、长整型(long int)和无符号型(unsigned)等不同类型。

请注意

整型常量的无符号数也可用后缀U或u来表示。例如,358u、0x38Au、235Lu(L表示long型)均为无符号数。前缀、后缀可同时使用,以表示各种类型的数。例如,0XA5Lu表示十六进制无符号长整数 A5,其十进制为165。

真题演练

【例1】C源程序中不能表示的数制是( )。

A)十六进制     B)八进制

C)十进制     D)二进制

【解析】在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择选项D。

【答案】D

【例2】以下选项中,能用作数据常量的是( )。

A)115L      B)0118

C)1.5e1.5     D)o115

【解析】A选项中,115L表示115是长整型数据,合法。选项B是八进制常量的表示方法,但是在八进制中不能含有数字8,所以选项B错误。选项C中,e后面应该是整数,不能是小数1.5,所以选项C错误。选项D中,八进制常量应该是以数字“0”开始,而不是以字母“o”开始。

【答案】A

【例3】C语言整数不包括( )。

A)带小数点的整数  B)正整数

C)负整数     D)无符号整数

【解析】C语言整数包括正整数、负整数、无符号整数,不含带小数点的整数,故选择选项A。

【答案】A