小编Jon*_*ner的帖子

浮点数溢出但不是在C中的printf参数?

为什么当我的溢出计算是printf()函数的参数时,float不会溢出,但是当编码计算被分配给一个单独的变量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?
Run Code Online (Sandbox Code Playgroud)

结果:

This demonstrates floating data type overflow. We should  get an 'inf' value.
3.400000e+38*10=3.400000e+39.
Run Code Online (Sandbox Code Playgroud)

而且,当计算不是一个论点时:

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
Run Code Online (Sandbox Code Playgroud)

及其结果:

This demonstrates floating data type overflow. We should  get an 'inf' value.
3.400000e+38*10=inf.
Run Code Online (Sandbox Code Playgroud)

c floating-point printf arguments overflow

0
推荐指数
1
解决办法
112
查看次数

标签 统计

arguments ×1

c ×1

floating-point ×1

overflow ×1

printf ×1