私はこの単純なコードを試しています。それはDFに等しくなければならないので、私ジ二重可変であるが、私は(フロート)に設定(float)キャストが動作しません
int main(){
int i, cont=0;
float f;
double di, df;
for(i=10000000, f=i; i<INT_MAX; i++, f=i, df=f, di=((float)i)){
if(i!=f){
printf("i=%d f=%.2f df=%.2lf di=%.2lf\n", i, f, df, di);
if(cont++==10) return 0;
}
}
return 1;
}
、しかし:それはフロートで表現できない最初の10の整数を示しますそうではない。
例えば、番号16777217を F によって16777216とDFとして表されているが、ジは(フロート)キャスティングを無視し、依然として16777217です。
これはどのように可能ですか?
**私はこの使用しています:あなたの質問に関連するGCC(Ubuntuの4.4.3-4ubuntu5)4.4.3
プラットフォームとコンパイラのバージョンは何ですか? – sarnold
なぜカンマ演算子を使用していますか?このような不要な複雑さの問題を追加する必要は全くありません。 – Joe
あなたは '%lf'を言う必要はありません。ただ '%f'はうまく、' double'を意味します。 –