山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
整型数据
(1)基本整型(int型)
编译系统分配给int型数据2个字节或4个字节(由具体的C编译系统自行决定)。在存储单元中的存储方式是:用整数的补码形式存放。一个正数的补码是此数的二进制形式,如5的二进制形式是101,如果用两个字节存放一个整数,则在存储单元中数据形式如图
如果是一个负数,则应先求出负数的补码。求负数的补码的方法是:先将此数的绝对值写成二进制形式,然后对其所有二进位按位取反,再加1。如-5的补码见图
在存放整数的存储单元中,最左面一位是用来表示符号的。如果该位为0,表示数值为正:如果该位为1,表示数值为负。
说明:
如果给整型变量分配2个字节,则存储单元中能存放的最大值为0111111111111111第1佳为0代表正数,后面15位为全1 ,此数值是2的15次方减1 即十进制数32767。最小值为1000000000000000 ,此数是-2的15次方,即-32738。因此一个整型变量的值的范围是一32 768 ~ 32 767,超过此范围,就出现数值的“溢出”,输出的结果显然不正确。
(2)短整型
类型名为short int或short。如用Visual C++,编译系统分配给int数据4个字节,短整型2个字节。存储方式与int型相同。一个短整型变量的值的范围是-32768 ~ 32767
(3) 长整型
类型名为long int或long。Visual C++对一个long型数据分配4个字节(即32位)因此long int型变量的值的范围是-2147483648 ~ 2147483647。
(4)双长整型
类型名为long long int或long long,一般分配8个字节。这是C99新增的类型,但许多C编译系统尚未实现。说明:C标准没有具体规定各种类型数据所占用存储单元的长度,这是由各编译系统自行决定的。C标准只要求long型数据长度不短于int型, short型不长于int型。
即sizcof ( short ) < =sizeof ( int ) < =sizeof ( long ) < =sizeof ( long long )
sizeof是测量类型或变量长度的运算符。
整型变量的符号属性
以上介绍的几种类型,变量值在存储单元中都是以补码形式存储的,存储单元中的第1个二进位制代表符号。整型变量的值的范围包括负数到正数
整型数据常见的存储空间和值的范围如下
在实际应用中,有的数据的范围常常只有正值(如学号、年龄、库存量、存款额等)。
为了充分利用变量的值的范围,可以将变量定义为“无符号”类型。可以在类型符号前面加上修饰符unsigned,表示指定该变量是“无符号整数”类型。如果加上修饰符signed,则是“有符号类型”。
有符号整型数据存储单元中最高位代表数值的符号( 0为正,1为负)。如果指定unsigned(为无符号)型,存储单元中全部二进位(b)都用作存放数值本身,而没有符号。无符号型变量只能存放不带符号的整数,如123,4687等,而不能存放负数,如-123,-3。由于左面最高位不再用来表示符号,而用来表示数值,因此无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。
说明:
( 1 )只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加( 2 )对无符号整型数据用“% u”格式输出。% u表示用无符号十进制数的格式输出。