/* File name 6-1.c */ #include <stdio.h> main() { int a=65536; int b=2147483647; printf("%d %d\n", a*a, b+1); }
上の計算は, 整数型の範囲を越える計算を行っています. 当然間違った結果が出力
されます. このように, 型の範囲を越える計算が起こる事を, オーバーフロー
といいます. double 型でも最大の数
より大きい値が
出る事をオーバーフローといいます.
これに対して, 前回やったような double 型の加法減法での切捨てや,
0 でない最小数
より小さい値が計算で出てくる事を, アンダーフロー(underflow)といいます.
次の例で, double 型でアンダーフロー, オーバーフローを起すとどうなるかを
見て下さい.
/* File name 6-2.c */ #include <stdio.h> main() { double a=2.2250738585072014E-308; double b=1.7976931348623157E308; printf("%f\n", a*a); printf("%f\n", b*2); }