printf的不稳定行为

时间:2013-08-05 23:54:28

标签: c++ printf

从printf获得一些奇怪的结果。

double scale = 129 / 1024;

printf("%f \n", scale);

正在打印-0.000000,0.000000或一些巨大的随机数,如947634637338383939387378370000000000000.00000。每次编译和运行时,它似乎在这些之间随机交替。程序还有很多,但我无法弄清楚在这种情况下可能会影响printf的原因。这正是我的程序中出现这两个语句的方式。我做了什么?

2 个答案:

答案 0 :(得分:0)

我希望它能一直打印0.000000(129 / 1024) = 0用于整数运算。

答案 1 :(得分:0)

打印零而不是不稳定的行为,它显示129/1024除法的结果,并且因为这两个数字都是整数,结果为0.然后将其分配给double。

通过将129更改为129.0来修复该问题,这使其成为double值。

无法从我们可以看到的代码中解释“大数字”。我猜这里有比这两行更多的代码,并且其他地方可能会出现影响结果的问题。