-1

以下のプログラムは 123828749, 0.000000 を出力していますが、私は 123828749, 123828749.0 を期待していました。どこから 0.000000 を取得していますか?

    #include <stdio.h>

    void main()

    {

        double x = 123828749.66;

        int y = x;

        printf("%d\n", y);

        printf("%lf\n", y);

    }

ありがとう

4

2 に答える 2

1

あなたの質問により正確に答えるために(Davidの答えは完全に正確ですが)、(実行時に)フォーマット文字列がprintf関数によって解析されると、フォーマットが必要になりdoubleます。ただし、intandを指定したのintは、 と同じサイズではない可能性が高いためdouble(ただし、これが事実であるという兆候はありません)、プログラムはジャンク メモリを読み取り、この予期しない結果を出力しました。これがゼロの由来です。

于 2015-08-10T20:31:42.093 に答える