Die Auswertung des ersten Operanden des ternären Operators in C
Syntax
Hier geben wir das schon gezeigte Syntaxdiagramm erneut wieder.
- Syntaxdiagramm (vereinfacht)
Ausdruck
.----------. .-. .----------. .-. .----------.
--->| Ausdruck |--->( ? )-->| Ausdruck |--->( : )-->| Ausdruck |--->
'----------' '-' '----------' '-' '----------'
Semantik (Teil I)
Die Auswertung eines ternäre Ausdrucks bewirkt zunächst einmal die Auswertung seines ersten Operanden.
Dies zeigt das folgende Beispiel.
main.c
#include <stdio.h>
int main( void )
{ puts( "alpha" )?0:0; }stdout
alpha
Derselbe Effekt könnte vergleichsweise auch durch eine Auswertung mit einer Auswertungsanweisung erreicht werden.
main.c
#include <stdio.h>
int main( void )
{ puts( "alpha" ); }stdout
alpha
Falls die Auswertung des ersten Ausdrucks keine Ausgabe erzeugt, ist sie unter Umständen nicht mehr beobachtbar, aber findet trotzdem statt. In dem folgenden Programm wird beispielsweise der Ausdruck »0« ausgewertet.
main.c
#include <stdio.h>
int main( void )
{ 0 ?1:2; }stdout
- (keine Ausgabe)
Übungsfragen
? Übungsfrage
Welche Ausgabe erzeugt das folgende Programm?
main.c
#include <stdio.h>
int f()
{ puts( "Anton" );
return 1; }int main( void )
{ f() ?0:0; }
? Übungsfrage
Welche Ausgabe erzeugt das folgende Programm?
main.c
#include <stdio.h>
int f()
{ puts( "Berta" );
return 0; }int main( void )
{ f() ?0:0; }
? Übungsfrage
Welche Ausgabe erzeugt das folgende Programm?
main.c
#include <stdio.h>
int f()
{ puts( "Dora" );
return 1; }int main( void )
{ f() ?1:0; }
? Übungsfrage
Welche Ausgabe erzeugt das folgende Programm?
main.c
#include <stdio.h>
int f()
{ puts( "Emil" );
return 1; }int main( void )
{ f() ?0:1; }