2008年8月26日 星期二

%f vs. %lf

關於double型態的變數,在printf()和scanf()的用法有些許不同。在printf()中對於float和double都可以使用%f來印出數值。然而在scanf()如下例,便會出現問題:

double a;
scanf("%f", &a);

正確的用法應該使用%lf

為何scanf()和printf()對於double的處理方法不一樣?
在printf()裡,float型態會被promote成double型態。而在scanf()裡,並沒有任何的promote,而且透過指標來儲存double和float相異非常大,所以才會區分出%f和%lf。

0 意見: