double d;
scanf("%f", &d);
printf("%f", d);
結果:輸入輸出
輸入:10.3
輸出:0.00000
爲什麼呢?我認爲輸出應該是10.3 visual studio 2008.
double d;
scanf("%f", &d);
printf("%f", d);
結果:輸入輸出
輸入:10.3
輸出:0.00000
爲什麼呢?我認爲輸出應該是10.3 visual studio 2008.
對於scanf()
,%f
是爲float
。對於double
,您需要%lf
。所以,
#include <stdio.h>
main() {
double d;
scanf("%lf", &d);
printf("%f\n", d);
}
與輸入10.3
產生10.300000
。
對於%4.1lf格式的字符串+1字符串Sergey可以查看此內容:http://www.cplusplus.com/reference/clibrary/cstdio/printf/ – stacker 2010-03-07 10:13:06
'scanf()'需要'%lf',但對於'printf ()','%f'意味着'double'(並且也使用'float',因爲'float'在參數列表的變量部分被提升爲'double')。 '%lf'對'printf()'沒有意義。 – caf 2010-03-07 10:20:46
printf是一個可變參數函數,所以參數提升不需要應用 - 編譯器不知道格式字符串之外的參數類型。說,%lf是需要的。 – 2010-03-07 14:18:27
嘗試用%lf
代替%f
。在處理float
而不是double
時使用%f
。 (或者,您可以製作d
a float
)。
現在你的問題已解決,http://stackoverflow.com/questions/2377733/how-does-this-program-work可能會澄清一些事情! – Lazer 2010-03-07 19:12:42