Text und Zahlen
printf kann auch Zahlen ausgeben, und es kann sogar mit ihnen rechnen. Das f am Ende des Namens steht für „formatiert“. Der Text in Anführungszeichen ist eine Formatzeichenkette (englisch format string), und sie kann Formatangaben enthalten: Platzhalter, die mit % beginnen. Die Angabe %d bedeutet „hier kommt eine Ganzzahl hin“. Die Zahl selbst schreibst du hinter den Text, durch ein Komma getrennt:
printf("%d\n", 42);Das gibt Folgendes aus:
42Der Buchstabe d steht für „dezimal“: Die Zahl wird im Dezimalsystem ausgegeben, wie üblich. Schreibe Zahlen im Code ohne Leerzeichen und Trennzeichen: 1250, nicht 1 250 oder 1.250.
Statt einer Zahl kannst du hinter dem Komma auch eine Rechnung schreiben. C rechnet sie zuerst aus und gibt das Ergebnis aus. Ein Text in Anführungszeichen wird dagegen genau so ausgegeben, wie er dasteht:
printf("%d\n", 5 + 3);
printf("5 + 3\n");Das gibt Folgendes aus:
8
5 + 3Du addierst mit +, subtrahierst mit - und multiplizierst mit einem Sternchen * (nicht mit dem Buchstaben x). Wie in der Mathematik gilt Punkt vor Strich, und Klammern ändern die Reihenfolge:
printf("%d\n", 2 + 3 * 4);
printf("%d\n", (2 + 3) * 4);Das gibt Folgendes aus:
14
20Die Division / hält in C eine Überraschung bereit, deshalb kommt sie erst in der nächsten Lektion.
Die Formatzeichenkette kann um %d herum Text enthalten. Der Wert wird anstelle von %d ausgegeben, der übrige Text bleibt, wie er ist:
printf("Das Spiel hat %d Level.\n", 12 + 8);Das gibt Folgendes aus:
Das Spiel hat 20 Level.Die Leerzeichen um %d gehören zum Text, du musst sie also selbst schreiben: "Das Spiel hat%dLevel.\n" würde Das Spiel hat20Level. ausgeben.
Häufige Fehler:
- Ein vergessener Wert hinter dem Komma: Bei
printf("Das Spiel hat %d Level.\n");führt der Compiler das Programm nicht aus und meldet den Fehlermore '%' conversions than data arguments(mehr%-Angaben als Werte). - Eine Rechnung im Text:
printf("Das Spiel hat 12 + 8 Level.\n");gibtDas Spiel hat 12 + 8 Level.aus. C rechnet nicht innerhalb von Anführungszeichen. - Ein fehlendes Komma:
printf("%d\n" 42);endet mit dem Fehlerexpected ')'.
So schreibst du es:
Anweisungen
- 1
Das zweite
printfgibt den Text27 + 2aus. Ändere es so, dass C die Zahlen addiert und29ausgibt: Ersetze in den Anführungszeichen den Text durch%d\n, und schreibe hinter das schließende Anführungszeichen ein Komma und die Rechnung27 + 2. - 2
Mache aus dem Ergebnis jetzt einen ganzen Satz. Ändere das zweite
printfso, dass das Programm Folgendes ausgibt:27 Schüler und 2 Lehrer fahren auf den Ausflug. Das sind insgesamt 29 Personen.Lass C die 29 weiterhin mit
%dberechnen, und vergiss die Leerzeichen um%dnicht. - 3
Eine Eintrittskarte für den Zoo kostet 12 Euro. Füge eine Zeile hinzu, die ausgibt, wie viel die Karten für alle zusammen kosten, damit das Programm Folgendes ausgibt:
27 Schüler und 2 Lehrer fahren auf den Ausflug. Das sind insgesamt 29 Personen. Karten insgesamt: 348 €Lass C den Preis als
(27 + 2) * 12berechnen. Die Klammern sorgen dafür, dass zuerst die Personen addiert und erst dann mit dem Preis multipliziert werden.