简单C++代码:为什么这种情况不会发生?
#include "../../std_lib_facilities.h"
#include <float.h>
double ctok(double c){
const double koef_c_2_k = 274.15;
double k = c + koef_c_2_k;
if(k < -koef_c_2_k) error("Output abroad range of admissible values.");
return k;
}
int main(){
cout << "Max double value: " << DBL_MAX << endl;
double c = 0;
cout << "Celsius: ";
cin >> c;
double k = ctok(c);
cout << "Kelvin: " << k << endl;
return 0;
}
输出:
衬套@主机尼克斯:〜/ CPP/BS/5/5.2 $ ./a.out
最大双值:1.79769 E + 308
摄氏:0
开尔文:274.15
衬套@主机尼克斯:〜/ CPP/BS/5/5.2 $ ./a.out
最大双值:1.79769e + 308
摄氏: 100
开尔文:374.15
衬套@主机尼克斯:〜/ CPP/BS/5/5.2 $ ./a.out
最大双值:1.79769e + 308
摄氏:-100
开尔文:174.15
衬套@主机尼克斯:〜/ CPP/BS/5/5.2 $ ./a.out
最大双值:1.79769e + 308
摄氏:1.79769e + 308
开尔文:1.79769e + 308
bush @ host-nix:〜/ cpp/bs/5/5.2 $
在最后一种情况下,我设置了摄氏温度的最大值,并且我等待了错误信息,但是我得到了错误的开尔文值。为什么发生?
谢谢。
'1.79769e + 308' +'274.15'好像你正在向海洋中添加一杯水。 – deepmax 2013-05-12 07:45:10
如果将值添加到double可以容纳的最大值,您会发生什么?这个非常大的值是否小于-274.15? – 2013-05-12 07:47:23
如果我将**添加到** double **最大值,那么我必须得到** double **的最小值。或者我不是对的? – 2013-05-12 07:51:37