1. 程式人生 > >關於輸出%f和%lf的問題

關於輸出%f和%lf的問題

C++果然是非常微妙的語言,%f和%lf對於printf()和scanf()的效果是不同的

#include<stdio.h>
int main()
{
    float n;
    scanf("%lf",&n);
    printf("%f",n);
    return 0;
}
80
0.000000

解決辦法:1)將”%lf“改為”%f”;2)將float改為double

事實上,對於printf(),無論是%f還是%lf,效果都是一樣的。因為,遇到float,printf()會將float型別自動提升到double,所以不會有什麼問題。而且嚴格地講,printf()並沒有對於%lf的定義,雖然很多編譯器會接受,所以最好使用%f。
而對於scanf(),由於接受的是指標,並沒有型別提升的說法,所以對於double就應該用%lf,float就是%f。