第三节 整数类型
整数类型 整型常数的表示方法 (1)十进制: 与数学中十进制写法相同 如 6、-31、101 等都是合法的。 (1)十进制: 与数学中十进制写法相同 如 6、-31、101 等都是合法的。 (2)八进制: 用0开始的由0∽7构成的数 如 0777、012 等都是合法的。 (3)十六进制:用0x或0X开始的由 0,1,2,…,9,a,…,f (或 大写)构成的数 如 0x123、0xffFF 等都是合法 的整型常量。
整数类型 整型常数的表示方法 还有一种被称为长整型常数的整型常数,其表示形式是在整型常数的三种表示形式后加上字母l或L。 如: 6l或6L 012l或012L 0x12l或0x12L 012LU或0x12ul 123LL 0157LLU等。
整数类型 整型变量的存放方式 数据在内存中以二进制形式存放。 例如(32位机器): int i; i=10; i 1
整数类型 整型变量的存放方式 一个基本类型数据的几个字节的存放次序 不同CPU可能不同 例如 Intel CPU: 00001010 00000000 称为 little_endian
整数类型 整型变量的存放方式 实际上, 在计算机内部数据是以补码(complement)形式表示的。 例如(32位机器):int i; i = -10; 1 i 符号位
整数类型 整型变量的存放方式 原码:符号位+绝对值转换后的二进制 反码:符号位+绝对值转换后的二进制每位的反 补码:符号位+(反码+1) 一般带符号的整数采用补码表示方法。
整数类型 仅以32位机器为例! char int long long long short 类 型 含 义 占存储空间 数 值 的 范 围 类 型 含 义 占存储空间 数 值 的 范 围 char 字符 1个字节 -128∽127 int 整型 4个字节 -2147483648∽2147483647 long 长整型 long long 长长整型 8个字节 -263∽263-1 short 短整型 2个字节 -32768∽32767 仅以32位机器为例!
整数类型 数据类型的字节数 在不同机器中,数据类型所占的字节数可能是不同的。如:VC中是4个字节, 而早期的TC中的int是2个字节。 sizeof(类型名)或 sizeof(表达式) : 返回该类型在使用机器中的字节数。 如:VC中sizeof(int)是4,TC中sizeof(int)是2。 一般,int类型大小与所使用计算机的CPU字长相同。
整数类型 修饰类型的关键字 short 短型 如: short int a; long 长型 如: long int a; signed 有符号 如: signed int a; unsigned 无符号 如: unsigned int a; signed char a; unsigned char a; signed long int a; unsigned long int a; short b; long l; unsigned u,v; long long ll; unsigned long long ull;
整数类型 例: #include <stdio.h> 整型变量的定义和使用 int main() { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u; d=b+u; printf("a+u=%d,b+u=%d\n",c,d); return 0; } 运行结果为: a+u=22,b+u=-14
整数类型 整型变量的溢出 一个int型的变量最大允许值为INT_MAX(定义在limits.h中),最小为INT_MIN,如果超出范围就会出现所谓溢出的运行时错误(run-time error)。 如在一个32位机器中,一个int型的数据最大值为2147483647,如果再加上1,就会溢出, 值变为-2147483648。
整数类型 例: #include <stdio.h> 整型变量的溢出 int main() { int a,b; b=a+1; printf("a=%d,b=%d\n",a,b); … } 32位系统中的运行结果为: a=2147483647,b=-2147483648
整数类型 整型变量的溢出 上例: 如在32位系统中 a: 7f ff ff ff 2147483647 b: 80 00 00 00 -2147483648 运行时,系统不会给出溢出提示! 防止溢出的发生是程序员的责任!