通过试验的方法(即编写带有此类问题的程序)观察系统如何处理整数上溢、浮点数上溢和浮点数下溢的情况。
短整型(short int):分配2个字节。存储方式与基本整形相同,一个短整型的数据范围是:-32768-32767,即 -215 ~ (215 - 1);
长整型数据(long int):分配它4个字节,范围为 -231 ~ (231 - 1);
无符号长整型数据(unsigned long int):分配它4个字节,范围为 0 ~ 4294967295,即 0 ~ (232 - 1);
双长整型(long long int):在vc中系统给它分配8个字节,这种数据类型一般比较少用。
整数溢出:当达到最大值时,将会溢出到起始点;当达到最小值时,将会从最大点开始往变小方向溢出
#include<stdio.h>
#include<math.h>
int main(){
//int 类型在32位机器中通常为32位
int zhengshu1,zhengshu2;
unsigned int zhengshu3;
zhengshu1=2147483647;
zhengshu2=-2147483647;
zhengshu3=4294967295;
//整数的上溢,直接从-2147483648开始
printf("%d\t%d\t%d\n",zhengshu1,zhengshu1+1,zhengshu1+2);
//下溢也从-2147483648开始
printf("%d\t%d\t%d\n",zhengshu2,zhengshu2-1,zhengshu2-2);
//无符号整数上溢从0开始
printf("%u\t\t%u\t\t%u\n",zhengshu3,zhengshu3+1,zhengshu3+2);
return 0;
}
#include<stdio.h> int main(void) { unsigned int a=4294967295; float b=3.4E38; float c=b*10; float d=0.1234E-2; printf("%u+1=%u\n",a,a+1); printf("%e*10=%e\n",b,c); printf("%f/10=%f\n",d,d/10); return(0); }