以下のプログラムは、aがintの場合にa/100の異なる値を出力します。算術式がprintfと矛盾し、別の変数への代入
void main()
{
int a = -150;
float f;
f = a/100;
printf(" %f,%f ",f,a/100);
}
出力:-1.000000,0.000000
ここでは二%f値0.000000まで来るが、どのようにそれが可能であり、それは-1.000000または-1.500000でなければなりません。結果次に1.0
printf(" %f ",a/100);
プリント(1)が、浮動小数点形式の整数:
f = a/100;
フロートに格納された整数の除算を実行します
したがって、キャストしない限り、%fを基になる整数で使用しないでください。 (分かりますが、100.0を分母として使用したくありません)。あなたが言及した変更が完了したら、それが正しく印刷されることを知っていました。私のポイントは、%fフォーマット指定子が使われているときにintを浮動小数点にしていないのはなぜですか? – Bhargav
@iharob:私は何を考えていたのですか?編集しました。さらなる複雑さの必要はありません... –
@Bhargav私の編集を参照してください。 'printf'は知ることができません。 –