printf und Wechselwirkung mit fehlendem cast
Von: Robert Hartmann (robert_hartmann@gmx.net) [Profil]
Datum: 08.10.2009 16:34
Message-ID: <4ACDF88F.9010405@gmx.net>
Newsgroup: de.comp.lang.c
Datum: 08.10.2009 16:34
Message-ID: <4ACDF88F.9010405@gmx.net>
Newsgroup: de.comp.lang.c
Hallo zusammen,
Gegeben folgender fehlerhafte aber compilierbare Code -
es fehlen ein paar casts.
Ich bin gefragt worden, warum es im Code unten
augenscheinlich ausreicht, jeweils nur die erste
printf-gleitpunkt-Ausgabe mit korrektem cast
durch zuführen und bei der jeweils zweiten
den cast wegzulassen und trotzdem das erwartete
Ergebnis lesen zu können.
Und die nächste Frage ist:
Wieso man, wenn die a-Fälle mit korrekten casts ausgestattet sind
und die b-Fälle nicht kastet, das selbe Ergebnis für b wie bei a bekommt.
Gruß Robert
P.S. Ich würde mich zur Erklärung des Verhaltens ungerne auf
"Da muss du eben den Cast machen, sonst ist es einfach falsch
mit unsicherem Ergebnis" zurückziehen.
#include <stdio.h>
int main(int argc, char** argv ) {
int a3;
int b=-7;
printf("a als Zeichen: %c\n", a);
printf("a als vorzeichenlose Ganzahl: %u\n", a);
printf("a als Hexadezimalzahl: %x\n", a);
printf("a als vorzeichenbehaftete Ganzzahl: %d \n", a);
printf("Gleitpunktzahl einfache Genauigkeit 2 Nachkommastellen
%.2f\n",(float)a);
printf("Gleitpunktzahl doppelte Genauigkeit exponent. Darst. %E\n",a);
printf("\n \n");
printf("b als Zeichen: %c\n", b);
printf("b als vorzeichenlose Ganzahl: %u\n", b);
printf("b als Hexadezimalzahl: %x\n", b);
printf("b als vorzeichenbehaftete Ganzzahl: %d \n", b);
printf("Gleitpunktzahl einfache Genauigkeit 2 Nachkommastellen
%.2f\n",(float)b);
printf("Gleitpunktzahl doppelte Genauigkeit exponent. Darst. %E\n",b);
return 0;
}
[ Auf dieses Posting antworten ]Antworten
- Rainer Weikusat (08.10.2009 17:14)
- Georg Bauhaus (08.10.2009 18:47)
- Rainer Weikusat (23.10.2009 20:28)
- Markus Wichmann (08.10.2009 17:59)
- Stefan Reuther (08.10.2009 20:28)
- Thomas Koenig (09.10.2009 18:47)
