指定されたプログラムで、printf
s ごとに異なる結果が得られたのはなぜですか?
#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)
??
%lf
printfの@Adrianはと同じです%f
。float
変数の引数のa は、aがに変換さdouble
れるのと同じように、コンパイラによってshort
に変換されますint
。
4.4e10
は、double
それがfloat
の初期化で変換される定数であるがc
、double
に渡されたときにとして保持される定数であることを説明していprintf
ます。ただし、f
サフィックスを追加するとfloat
定数が一定になることも知りたい場合があります。印刷で4.4e10f
は、c
への初期化の結果と同じ値が表示されます4.4e10f
。float
定数とdouble
定数を区別することは、浮動小数点演算で質の高い作業を行う上で重要です。