關於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。
2008年8月26日 星期二
%f vs. %lf
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言