Frage von Kirra1, 24

wieso erhalte ich folgende Ausgabe bei C programm?

Hallo ich habe eine Frage bezüglich C Programming printf("#%5.2f#",1/3.0);

Ausgabe : # 0.33# aber warum wird statt 5 ein Leerzeichen ausgegeben ??

und warum erzeugt folgende Ausgabe 5 ?? printf("%d", (12 | 3) & 5);

Danke !

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von TeeTier, Community-Experte für programmieren, 20

Die Ausgabe ist absolut korrekt! :)

Die 5 besagt nur, dass die minimale Breite der Ausgabe 5 Zeichen lang sein MUSS. Und bei deinem Formatstring wird die Ausgabe dann eben mit Leerzeichen aufgefüllt.

Null, Punkt, Drei und Drei sind nur vier Zeichen! Also muss mit einem Leerzeichen aufgefüllt werden, damit man auf fünf kommt.

Wenn du das nicht willst, kannst du auch Folgendes probieren:

printf("#%.2f#", 1/3.0);

Das liefert dann genau vier Zeichen zwischen den Begrenzungszeichen.

Anstatt Leerzeichen, kannst du auch mit Nullen auffüllen:

printf("#%05.2f#", 1/3.0);

Vielleicht wird damit einiges klarer.

Und auf den zweiten Teil deiner Frage habe ich jetzt keine Lust mehr, weil es jetzt Abendessen gibt. :)

Dir wird sicher noch jemand anderes Erklären, was der Ausdruck mit den logischen Verküpfungen macht. Vielleicht wäre es hilfreich für dich, wenn du die Zahlen binär anstatt dezimal darstellst. Dann kämest du evtl. auch von allein auf die Lösung.

Viel Spaß noch! :)

Antwort
von newcomer, 24

#%5.2f# ist doch formatierte Zahl mit 5 Stellen vor und 3 stellen nach dem Punkt

Kommentar von Kirra1 ,

können Sie mir den zweiten Teil erklären ?

warum erzeugt folgende Ausgabe 5 ?? printf("%d", (12 | 3) & 5);

Antwort
von Mikkey, 21

Es werden 5 Stellen ausgegeben: " ,0,.,3,3"

Wenn Du Dir das binär vorstellst, ist es leichter zu verstehen:

(00001100|00000011) & 00000101 ==> 00000101

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten