2016-03-02 30 views

回答

3

轉換爲攝氏度的表達式使用double類型的常量,因此表達式的類型爲double。由於您使用%d格式說明符的值爲double,因此會出現未定義的行爲。

將第二個格式說明符更改爲%8.f,您將得到預期的輸出。另外,將第一個格式說明符更改爲%3.1d,這樣當fahr0時,它將打印該值而不是空白。

printf("%3.1d %8.f\n ",fahr,(5.0/9.0) * (fahr - 32.0)); 
+0

''%3.1d''很好的結果。 – chux

1

因爲你試圖使用double,你需要使用float。試試這個:

#include<stdio.h> 
main() 
{ 
int fahr; 
for(fahr = 300; fahr >= -40; fahr = fahr - 20) 
    printf("%3.d %8.f\n ",fahr,((fahr - 32) * .5556)); 
} 
+0

這個答案的代碼並沒有像「你需要使用float」那樣在任何地方使用'float'。 – chux