-1

重複の可能性:
C ++:「float」のprintf()フォーマット仕様は何ですか?

私はプログラミングにまったく慣れておらず、初心者レベルです(まだ非常に初心者でエラーが発生しやすいです:)

私の質問は次のとおりです。私は華氏27度を摂氏に変換するプログラムをCで書いています。

コードは以下のとおりです。


int main (void)

{
    float F = 27;
    float C = (F - 32) / 1.8;

    printf ("27 degrees Fahrenheit is %i degrees Celsius ", C);

    return 0;    
}

次の出力を取得します。

華氏27度は摂氏-2147483648度です

そんなに寒くなるとは思っていませんでした。私の計算機では-2.77になるはずです。何が悪いのでしょうか?そのような計算の結果として、世界は凍結するかもしれません!))

それが私が求めている基本事項だと思いますが、私には興味深いと思います。あなたの助けに感謝。

4

2 に答える 2

4
printf ("27 degrees Fahrenheit is %f degrees Celsius ", C);

%iのフォーマット指定子ですintdoubleaまたは aを渡すにはfloat、 が必要%fです。

于 2012-12-14T22:04:11.900 に答える
0

あなたprintf()は、指すメモリがCintであるかのように解釈されるように指定しています(システムとコンパイラに応じて32ビットまたは64ビット)。しかし、そのメモリ位置に格納されている実際の値はfloat.

そのため、printf()混乱しint、使用されるメモリ内のビットの値を出力しますfloat

于 2012-12-14T22:06:09.733 に答える