»printf« als Funktion in C
Ausgabeanweisungen als Auswertungsanweisungen
Eine Ausgabeanweisung (mit »printf«) ist ebenfalls eine Auswertungsanweisung.
Es handelt sich um nichts anderes als einen gewöhnlichen Aufruf der Funktion »printf«, gefolgt von einem Semikolon.
- Ein Aufruf der Funktion »printf« (ein Ausdruck)
printf
( "%d\n", 86 )- Ein Aufruf der Funktion »printf« mit einem folgenden Semikolon (eine Anweisung)
printf
( "%d\n", 86 );
Nur weil wir am Anfang dieses Kapitels den Begriff „Auswertungsanweisung“ noch nicht eingeführt hatten, bezeichneten wir eine solche Anweisung zunächst als „Ausgabeanweisung“. Der Begriff „Ausgabeanweisung“ kann aber auch weiterhin beibehalten werden, um eine zur Ausgabe verwendete Anweisung zu bezeichnen.
Formatierungsvarianten
Wir haben bisher hinter dem Worte »printf« eine neue Zeile begonnen
- »println« und »(« auf zwei verschiedenen Zeilen
printf
( "%d\n", 86 )
»printf« und die folgende runde Klammer auf »(« sind jeweils eine lexikalische Einheit. Aufeinanderfolgende lexikalische Einheiten dürfen in C aber im allgemeinen direkt hintereinander geschrieben werden (falls die erste lexikalische Einheit dadurch nicht verlängert wird). Daher ist es auch erlaubt, die ganze Ausgabeanweisung auf einer einzigen Zeile zu schreiben.
- »printf« und »(« direkt hintereinander
printf( "%d\n", 86 )
Der Wert eines Aufrufs von »printf«
Wenn »printf( "%d\n", 86 )« ein ganz normaler Aufruf einer Funktion ist, dann sollte er auch einen Wert haben. Tatsächlich können wir den Wert eines printf-Aufrufs mit »printf« selber ausgeben!
main.c
#include <stdio.h>
int main( void )
{ printf( "%d\n", printf( "%d\n", 86 )); }- Protokoll
86
3
Der Wert eines Aufrufs der Funktion »printf« ist normalerweise die Anzahl der ausgegebenen Zeichen. »8«, »6« und ein Zeilenende sind drei Zeichen.
»printf« und »putchar«
Der Umwandlungsspezifizierer »%c« erlaubt es, »putchar« mit »printf« nachzubilden.
main.c
#include <stdio.h>
int main( void )
{ putchar( 86 ); }- Protokoll
V
main.c
#include <stdio.h>
int main( void )
{ printf( "%c\n", 86 ); }- Protokoll
V
»%c« verlangt, daß das Schriftzeichen ausgegeben wird, dessen Kennzahl der Wert des zugehörigen Arguments (oben »86«) ist. Daher gibt »printf( "%c\n", 86 )« wie »putchar( 86 );« das Schriftzeichen aus, dessen Kennzahl gleich »86« ist.
- Umwandlungsspezifizierer und Ausdrücke
... ... Typ Merkwort
s "Text" char * s-tring
d 86 int d-ezimalsystem
g 1.86 double g-leitkommazahl
c 86 int c-ode eines Zeichens
»putchar( 86 )« und »printf( "%c", 86 )« haben beide dieselbe Wirkung. Da »putchar( 86 )« einfacher und wahrscheinlich meist schneller ist, wird man dies oft bevorzugen. Außerdem unterscheiden sich beiden Funktionen in der Bedeutung ihres Ergebniswertes.