指定されたプログラムで、printfs ごとに異なる結果が得られたのはなぜですか?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
また、次の出力が表示されます。
44000002048.000000
44000000000.000000
この変換方法に名前は付けられていますか?それについて読みたいです。
—
user10056563
C言語でから
—
Eric Postpischil、
doubleへの変換がいつ行われるかを知りたいfloatですか?または、変換からどのような値が得られるか、つまり、変換がどのような影響を与えるかを知りたいですか?または、他の何か?
私は疑問だどちらも、ここでの回答も標準をしかし、私は若い頃と学習
—
Adrian Mole、
C我々が使用printf("%f",x)のためにfloatとprintf("%lf",x)のためにdouble。物事はいつ変わりましたか?そして、どのように一つは考え明示的に(シングル)のprintf float- printf("%hf",x)??
%lfprintfの@Adrianはと同じです%f。float変数の引数のa は、aがに変換さdoubleれるのと同じように、コンパイラによってshortに変換されますint。
4.4e10は、doubleそれがfloatの初期化で変換される定数であるがc、doubleに渡されたときにとして保持される定数であることを説明していprintfます。ただし、fサフィックスを追加するとfloat定数が一定になることも知りたい場合があります。印刷で4.4e10fは、cへの初期化の結果と同じ値が表示されます4.4e10f。float定数とdouble定数を区別することは、浮動小数点演算で質の高い作業を行う上で重要です。