ich ', diesen einfachen Code versuchen. Es zeigt die ersten 10 ganzen Zahlen, die nicht in float dargestellt werden können:(Float) Casting funktioniert nicht
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;
}
di ist eine doppelte variable, aber ich stelle es auf (float) i, so dass es gleich sein sollte, df, aber es ist nicht.
Zum Beispiel kann die Zahl 16.777.217 als 16777216 durch f dargestellt unddf, aber di noch 16.777.217, ignoriert den (float) Guss.
Wie ist das möglich?
** Ich bin mit diesem: gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Welche Plattform und Compiler-Version? – sarnold
Warum benutzen Sie den Komma-Operator so? Es gibt absolut keinen Bedarf und fügt unnötige Komplexitätsfragen wie diese hinzu. – Joe
Sie müssen nicht '% lf' sagen. Nur '% f' ist in Ordnung, und es bedeutet' double'. –