C语言的整数类型(以下简称整型)用来表示整数,因为计算机只能表示有限位的整数,所以整型是整数的一个有限子集,整型数据又可以分为整型变量和整型常量。
(1)整型变量的分类
整型变量按数值的取值范围不同分为以下三种:
· 基本整型 :以int作为类型说明符。
· 短整型 :以short int或short作为类型说明符。
· 长整型 :以long int或long作为类型说明符。
整型变量在内存中占的字节数与所选择的编译系统有关,不同的编译系统对整型数据的存储是不同的,规定long型整数不短于int型,short型整数不长于int型。
例如,Visual C++系统为int型变量和long int型变量分配4字节(32位),因此,值的范围是-2 31 ~2 31 -1。
以上三种类型说明符用来定义带符号(正、负)的整型变量,而实际应用中也可能处理一些不带符号的整型变量,处理方法是将存储单元中的全部二进制位都用来存放数,取消符号位,这类变量称为无符号整型,如图2-3所示。
图2-3 短整型数据在内存中的存储形式
无符号整型变量按数值的取值范围不同也分为三种:
· 无符号基本整型 :以unsigned int或unsigned作为类型说明符。
· 无符号短整型 :以unsigned short int或unsigned short作为类型说明符。
· 无符号长整型 :以unsigned long int或unsigned long作为类型说明符。
无符号整型变量只能存放不带符号的整数,不能存放负数,它可以存放正数的范围比相应的有符号整型变量大一倍。以Visual C++系统为例,C语言的整数类型占用的存储空间和取值范围如表2-1所示。
表2-1 Visual C++系统整型数据占用的存储空间和取值范围
由表2-1可见,不同整型类型占用的字节数不同,能够表达的数值范围也不相同。
(2)整型变量的定义
程序中用到的每一个整型变量,都应在使用前加以定义。
【例2-2】 阅读下面的程序,给出程序的输出结果。
运行结果:
想一想,如果把变量sum1定义成short型,sum2定义成unsigned short型,可以吗?
(1)整型常量的表达形式
整型常量就是整常数。有以下三种表达形式:
· 十进制数:例如,567、0、-89。
· 八进制数:以数字0开头,并由数字0~7组成的数字序列,例如,0125、011。八进制数0125转换成十进制数是85。
· 十六进制数:以0x或0X开头,并由数字0~9和字符a~f或者字符A~F组成的数字序列。习惯上,当以0x开头时用小写字母,当以0X开头时用大写字母。例如,0x125、0x2ab、0X2AB。十六进制数0x125转换成十进制数是293。
(2)整型常量的类型
我们已经知道,整型变量有6种类型,整型常量的类型和所选的编译系统相关。例如,在Visual C++系统中整型常量的默认类型是int。如果非负的整型常量在unsigned型的取值范围内,可以赋值给一个unsigned型变量,例如,unsigned short int a=50000;是可以的,但unsigned short int a=70000;不可以(因为70000>65535)。
可以用加后缀方法明确指定整型常量的类型。在一个整型常量后面加一个字母L(或小写l),则明确指定该常量是long int类型,例如,0L、123L、-234l等;在一个正的整型常量后面加一个字母U(或小写u),则明确指定该常量是unsigned int类型,例如,123U、234u等。