Wenn ich eine Variable als float deklariere und zwei hexadezimale Zahlen subtrahiere, erhalte ich jedes Mal, wenn ich kompiliere und laufe, unterschiedliche Antworten. Wenn ich eine Integer-Variable deklariere, bleibt das Ergebnis immer gleich, wenn ich den Code kompiliere und ausführe. Ich verstehe nicht, warum in float speichern das Ergebnis jedes Mal ändert ich mit der Differenz der beiden gleichen Zahlen (0xFF0000 - 0xFF7FF) kompilierenSubtrahierende Hexadezimalzahlen
int main()
{
float BlocksLeft = 0xFF0000 - 0xFF7FF;
int BLeft = 0xFF0000 - 0xFF7FF;
printf("%08x\n", BlocksLeft);
printf("%08x\n", BLeft);
}
ich diesen Online-Compiler http://www.tutorialspoint.com/compile_c_online.php –
Ein Schwimmer ist nicht eine ganze Zahl ohne Vorzeichen bin mit und '% x' ist ein unzulässiger Formatbezeichner für 'BlocksLeft', der zu UB führt. –
Um ein 'float' zu drucken und seine Bedeutung zu sehen, versuchen Sie' printf ("%. 9e \ n", BlocksLeft); '' 08x' ist für vorzeichenlose Ganzzahlen. – chux