next up previous contents
Next: (do) while-Schleifen Up: Kontrollstrukturen Previous: if-Anweisung


Ternärer ?:-Operator

Als Einschub und der Vollständigkeit halber soll hier der ternäre Operator ?: behandelt werden. Ternär bedeutet, daß der Operator drei Argumente benötigt. Dieser kann dazu dienen, innerhalb von Ausdrücken Teilausdrücke bedingt auszuwerten.

inline int abs(int number) {
  // compute absolute value 
  return number > 0 ? number : -number;
}
Ist der vor dem Fragezeichen stehende Ausdruck true, so wird der Teilausdruck vor dem Doppelpunkt, sonst derjenige nach dem Doppelpunkt ausgewertet. Der resultierende Typ der beiden alternativen Ausdrücke muß gleich sein. Aufgrund der geringen Priorität dieses Operators und zur Verdeutlichung der Zusammengehörigkeit der Teilausdrücke sollte man sich angewöhnen, großzügig Klammern zu setzen.
  int i1   =       3 > 4 ? 0 : 1;    //  i1   is 1
  int i2   = 3 * ( 3 > 4 ? 0 : 1 );  //  i1_3 is 3
  int i3   = 3 *   3 > 4 ? 0 : 1;    //  i2_3 is 0, since * binds
                                     //    stronger than >

Dieser Operator kann immer durch eine if-Anweisung vermieden werden, kann aber in vereinzelten Situationen klarer sein. Da er anderenfalls eine der zahlreichen Möglichkeiten in C/C++ ist, seine Programme für andere erfolgreich unlesbar zu gestalten, sollte man ihn sparsam einsetzen.



© R.Hilfer et al., ICA-1, Univ. Stuttgart
28.6.2002