====== Der bedingte Operator ====== Dieser Artikel beschäftigt sich mit einem eher "exotischem" Operator. Seine Syntax mutet etwas seltsam an, und er wird auch nur mehr selten verwendet. \\ Nichtsdestotrotz darf er in keinem C und C++ Tutorial fehlen. ===== Syntax ===== Die Syntax lautet wie folgt: ? : Wobei ein logischer Ausdruck sein muss, also entweder wahr oder falsch sein muss,\\ und ein beliebiger Ausdruck. ===== Semantik ===== Was er tut: Wenn wahr ist, ist der Rückgabewert dieses Operators der erste , ansonsten gibt er den zweiten zurück. ===== Beispiel ===== Etwas klarer sollte der Operator mit einem kleinen Beispiel werden: int main() { int seven_is_good = 0; int var; var = seven_is_good ? 3 : 7; printf("var ist jetzt %d\n",var); /* var ist jetzt 7 */ seven_is_good = 1; var = seven_is_good ? 3 : 7; printf("var ist jetzt %d\n",var); /* var ist jetzt 3 */ return 0; } ===== Erweiterte Anwendung ===== Der Operator kann auch verschachtelt werden, dabei ist eine (oder beide) der e ebenfalls der bedingte Operator. Beispiel: int main() { int b = 11; int m = b>10 ? 7 : b > 5 ? 2 : 4; int n; /* zur Erläuterung kann der obige Initialisierungsausdruck * auch mit if-Verzweigungen Ausgedrückt werden. */ if (b>10) n = 7; else { if (b > 5) n = 2; else n = 4; } printf ("m ist %d\n", m); printf ("n ist %d\n", n); return 0; } Einer der e darf auch eine [[c:expr:commaoperator|kommagetrennte Liste]] sein. Erwähnt sein noch, dass es wegen der schlechten Lesbarkeit (und wegen des fehlenden "Bekanntheitsgrades") manchmal besser ist auf diesen Operator zu verzichten. Eine der einigermaßen eleganten Anwendungsmöglichkeiten ist die Initialisierung von Variablen: int wert = (bedingung ) ? value_true : value_false; In diesem Sinne, fröhliches conditional operating ;-)