2016-07-20 11 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); 
} 

コメントのように、浮動小数点数の代わりに倍精度浮動小数点数を書くとエラーが発生します。私のコードに何が問題なのですか?double、float変数代入に関するCのエラー

+1

「scanf」のマニュアルページから分かりませんでしたか? – Olaf

+0

http://stackoverflow.com/questions/4264127/correct-format-specifier-for-double-in-printf受け入れられた答えを(少なくとも最後の部分)読みます。 – 4386427

答えて

2

scanfの書式指定子%fは、へのポインタであり、doubleではありません。これは、2つのサイズが異なるために重要です。 doubleのアドレスを渡すと、doubleを構成するバイトのすべてではなく、一部が読み込まれ、結果として未定義の動作が発生します。

doubleに値を読み取るには、%lfを使用します。

関連する問題