2.3 整型数据
2.3.1 整型常量
在C语言程序中,整型常量可以用十进制、八进制和十六进制等形式表示。
十进制基本常量用一串连续的数字表示,例如32767、-32768、0等。
二八进制数也是用一串连续的数字表示,但其开头必须是数字“0”。例如010、011、016等都是合法的八进制数,与之对应的十进制数为8、9、14。因此,在C程序中不能在一个十进制数前随意添加数字“0”。例如,不能把十进制数11写成011。注意:八进制数必须用合法的八进制数字表示。例如,不能写成O18,因为数字8不是八进制数字。
十六进制数用数字0和字母x(或大写字母X)开头。例如0x10,0Xde,0xf等都是合法的十六进制数,与之对应的十进制数分别为16、222、15。注意:十六进制数必须用合法的十六进制数字表示。十六进制数中的字a,b,c,d,e,f既可以用小写也可以用大写。
在C程序中,只有十进制数可以是负数,而八进制和十六进制数只能是整数。
整型常量又有短整型(short int)、基本整型(int)、长整型(long int)和无符号型(unsigned)等不同类型。
2.3.2 整型变量
整型变量可以分为基本型、短整型、长整型和无符号型四种。本节只介绍基本型的整型变量。
基本型的整型变量用类型名关键字int进行定义,例如:
int k; /*定义k为整型变量*/
一个定义语句必须以一个“;”号结束。在一个定义语句中也可以同时定义多个变量,变量之间用逗号隔开。例如:
int i,j,k; /*定义i,j,k为整型变量*/
不同的编译系统为int变量开辟的内存单元大小不同。VC6.0为int变量开辟4个字节(32个二进制位)的内存单元,并按整型数的存储方式存放数据,允许存放的数值范围是:
-21474836x8~2147483547整型的变量只能存放整型数值。
当按上述方式定义变量i、j和k时,编译程序仅为i、j和k开辟存储单元,而没有在存储单元中存放任何初值,此时变址中的值是无意义的,称变量值“无定义”。
C语言规定,可以在定义变量的同时给变盘赋初值,也称变量初始化。例如:
main()
{ int i=1,j=0,k=2; /*定义i,j,k为整型变量,它们的初值分别为1、0和2*/
┆
}
2.3.3 整型数据的分类
前面介绍的int类型通常称为基本整型。除此之外,C语言中整型数据还有其他三种类型:
短整型(short int)、长整型(int或long int)、无符号型(unsigned)。若不指定变量为无符号型,则变量隐含为有符号型(signed)。
不同的编译系统或计算机系统对这几类整型数所占用的字节数有不同的规定。表2.1列出了在VC6.0中定义的整型数所占用的字节数和数值范围。表中方括号内的单词可以省略,各单词排列的先后次序无关紧要。
在VC6.0中可以在整型常量的后面加一个字母l(L的小写)或L,例如:123L、345l、0L、123456L等,这些常量在内存中占四个字节。
无论是短整型数还是长整型数,都被识别为有符号整数。无符号整数在数的末尾应该加上字母后缀u或U。若是长整型无符号整型常量,则可以加后缀lu或LU。短整型无符号常量的取值应在0-65535范围内,长整型无符号常量的取值在0-4294967295的范围内。注意:无符号常量不能表示成小于0的负数,例如:-200U是不合法的。