nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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
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