1. Find out what your system does with integer overflow, floating-point
overflow, and floating-point underflow by using the experimental
approach; that is, write programs having these problems.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include<stdio.h> int main() { int i,j,k; /* Winodws,int 的範圍是-2^31 ~ 2^31-1 */ float a,b,c,d; /* Winodws,float 的範圍是 10^37 ~ 10^-37 */ i = 2147483647; /* 測試整數溢位,正常顯示的最大值 */ j = -2147483648; /* 測試整數溢位,正常顯示的最小值 */ k = 2147483649; /* 測試整數溢位,溢味 */ a = 1.0e37; /* 測試浮點數溢位,正常顯示最大值 */ b = -1.0e37; /* 測試浮點數溢位,正常顯示最小值 */ c = 3.0e30 + 1.0; /* 測試浮點數溢位,溢位 */ d = c - 3.0e30; /* 測試浮點數缺位,缺位 */ printf("整數型態顯宣告,並指定值為時 2147483647,會顯示 %d \n", i); printf("整數型態顯宣告,並指定值為時 -2147483648,會顯示 %d \n", j); printf("整數型態顯宣告,並指定值為時 2147483649,會顯示 %d \n", k); printf("浮點數型態顯宣告,並指定值為時 1.0e37,會顯示 %e \n", a); printf("浮點數型態顯宣告,並指定值為時 -1.0e37,會顯示 %e \n", b); printf("浮點數型態顯宣告,並指定值為時 3.0e30 + 1.0,會顯示 %e \n", c); printf("浮點數型態顯宣告,並欲使其運算結果為 1時,會顯示 %e \n", d); return 0; } |