Frage von Kirra1, 25

welche Ausgabe erhält man be folgender Anweisung (C Sprachprogramm)?

Hallo printf("x%cx",0x3F); ich habe x?x erhalten ich weiss nicht aber warum nicht x63x ??

Expertenantwort
von TeeTier, Community-Experte für programmieren, 6

Deine vielen Fragen zu dem Thema deuten an, dass dir offensichtlich nicht klar ist, dass man ein und dieselbe Zahl verschieden darstellen kann.

Folgende Zahlen sind identisch:

63 <= Dezimal
111111 <= Binär
3f <= Hexadezimal
77 <= Oktal
1r <= Basis 36
/ <= Basis 64
? <= ASCII

All diese "Zahlen" haben ein und denselben Wert: Nämlich 63 in unserer gängigen Dezimalschreibweise.

Es ist ALLES das selbe!

Wenn dir das nicht sofort klar ist, dann lies dir mal das hier durch:

https://de.wikipedia.org/wiki/Stellenwertsystem

Du kannst ja mal das hier ausprobieren:

printf("%c %o %x %d\n", 63, 63, 63, 63);
printf("%c %o %x %d\n", 0x3f, 0x3f, 0x3f, 0x3f);
printf("%c %o %x %d\n", 077, 077, 077, 077);
printf("%c %o %x %d\n", '?', '?', '?', '?');

Kompiliere das ruhig mal, und lass dich von der Ausgabe überraschen! :)

Aber mach dir keinen Kopf, das geht vielen Anfängern so. Es ist offenbar schwierig, sich am Anfang vorzustellen, dass 77 gleich 63 in einer anderen Basis ist. :)

Ich weiß, das ist hart, aber versuch dich weiter durchzubeißen! Irgendwann macht es "klick"!

Viel Erfolg! :)

Antwort
von pumka2, 25

%c ist doch für Char Variablen. 63 ist kein char sondern int. Und wo kommt die 63 überhaupt her?

Kommentar von J0T4T4 ,

char = int -> implizite Typumwandlung

0x3F = 63 (Hex zu Dec)

Antwort
von J0T4T4, 14

%c ist wie bereits erwähnt das Ausgabeformat für char. Und 63, also 0x3F ist wohl gleich '?'. 

Dann ist die Ausgabe also: 'x' + %c (also '?') + 'x'

Zusammengefasst: "x?x"

(Siehe implizite Typenumwandlung)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten