编程题部分:
1,通过试验观察系统如何处理整数上溢,浮点数上溢和浮点数下溢的情况。
整数上溢:编译器会不加提示的依次使用 int ,long ,unsigned long ,long long ,unsigned long long 当达到它能表示的最大值时,他会重新从起始点开始。
#include <stdio.h>
int main(void){
int i = 2147483647;
unsigned int j = 4294967295;
float t = 3.2E38*100;
float p = 0.1234E-2 / 10;
printf("%d %d \n",i,i+1); //int的取值范围在[-32767,32767]
//而long类型的取值范围在[-2147483647,2147483647],int类型的i转换为long类型的i
//所以此时的i为long的最大值,因此i+1从起始点{0}开始。
printf("%d %d \n",j,j+1); //同理,unsigned long 取值范围为[0,4294967295]
printf("%f %f \n",t,p); //浮点型上溢,会给该值赋一个表示无穷大的值
//浮点型下溢,则会损失精度
}</