为什么当我的溢出计算是 printf() 函数的参数时,浮点数不会溢出,但是当编码计算分配给单独的变量时,float_overflowed,而不是 printf 函数的参数我得到“inf”的预期结果?为什么会这样?是什么导致了这种差异?
导致我提出这个问题的代码和结果如下。
这是我的代码在计算是参数时没有按预期执行:
float float_overflow;
float_overflow=3.4e38;
printf("This demonstrates floating data type overflow. We should get an \'inf\' value.\n%e*10=%e.\n\n",float_overflow, float_overflow*10); //No overflow?
结果:
This demonstrates floating data type overflow. We should get an 'inf' value.
3.400000e+38*10=3.400000e+39.
并且,当计算不是参数时:
float float_upperlimit;
float float_overflowed;
float_upperlimit=3.4e38;
float_overflowed=float_upperlimit*10;
printf("This demonstrates floating data type overflow. We should get an \'inf\' value.\n%e*10=%e.\n\n",float_upperlimit, float_overflowed); //for float overflow
及其结果:
This demonstrates floating data type overflow. We should get an 'inf' value.
3.400000e+38*10=inf.