2016-07-20 71 views
-2
#include <stdio.h> 

int main(void) 
{ 
    double height; //Error happens if I write double height instead of float height! 
    printf("Height(inch): "); 
    scanf("%f",&height); 
    printf("%f inch = %f cm \n",height,height*2.54); 
} 

正如您在註釋中看到的那樣,如果我寫雙倍高度而不是浮點高度,就會發生錯誤!我的代碼有什麼問題?C語言中有關雙浮點變量賦值的錯誤

+1

什麼來自'scanf'的手冊頁你不明白嗎? – Olaf

+0

http://stackoverflow.com/questions/4264127/correct-format-specifier-for-double-in-printf閱讀(至少最後一部分)接受的答案。 – 4386427

回答

2

%f格式說明符scanf需要一個指向float而不是double的指針。這很重要,因爲兩者的大小不同。傳入double的地址將導致包含double的一些但不是全部字節被填充,導致未定義的行爲。

要將值讀入double,請使用%lf

double height; 
scanf("%lf",&height);