【发布时间】:2013-07-07 17:20:32
【问题描述】:
printf("line 5: %f\n",98); //output is 0.000000
printf("line 6: %f\n",98.98); //output is 98.980000
printf("line 5: %f\n",98);//though same as first printf statement but output is 98.979980
虽然第一个和最后一个 printf 语句完全相同,但它们的输出不同。为什么?
因为 int 在期望浮点数时被传递给 printf,这就是为什么它工作起来很奇怪。但我的观点是,为什么在最后一个打印语句中,不是打印一些垃圾值或 0,而是使用第二个 printf 语句的值,这就是打印的内容。
【问题讨论】:
-
@hbrock,编译器无关紧要。 OP 的代码会导致未定义的行为。这个问题重复了数百次。
-
因为 int 在期望浮点数时被传递给 printf,这就是为什么它工作起来很奇怪。但我的观点是,为什么在最后一个打印语句中,不是打印一些垃圾值或 0,而是使用第二个 printf 语句的值,这就是打印的内容。