Der von C++ Programmierer am meisten geliebte Operator ist der Bedingungsoperator. Der einzige ternäre Operator (Operator mit drei Operanden) ist so etwas wie die Verkürzung der if-else-Anweisung. Dieser Operator ermittelt den Wert einer Variablen in Abhängigkeit von einer Bedingung. Die genaue Syntax lautet:
(Überprüfe Ausdruck 1) ? if true-return-this: if false-return-this;
Der Operator überprüft zuerst den Ausdruck 1 auf ein true oder false und gibt in Abhängigkeit vom Ergebnis einen Wert zurück. Aus diesem Grund wird „?:“ der Bedingungsoperator genannt.
Obwohl der ternäre Operator am Anfang etwas verwirrend ist kann man damit mit minimalem Aufwand höchst effektive Programme schreiben.
(var != 1) ?if-true-mache-das : if-false-mache-das;
Dieser Operator wird in C++ gerne verwendet, um einen Maximum- oder Minimum-Wert auf eine dritte Variable zu übertragen.
c = (a < b) ?a : b;
Der Ausdruck in der Klammer gibt ein true zurück, wenn der Wert der Variable a kleiner ist als der Wert der Variable b. In diesem Beispiel erhält die Variable c den Wert der Variablen a.
[sc name=“adsense_InText_ad“]
Würde der Operator „<“ (kleiner als) durch „>“ (größer als) ersetzt, bekäme c den Wert von b zugeordnet.
Zusammen mit dem Modolus-Operator „%“ wird der ternäre Operator zum Testen verwendet ob eine Zahl gerade oder ungerade ist:
(var % 2 != 0) ?if-true (gerade) mache dies: if-false (ungerade) mache dies;
Die Division der Variablen durch 2 liefert das Ergebnis, ob eine Zahl gerade oder ungerade ist. Der Ausdruck (var %2 == 1) liefert das gleiche Ergebnis, wird aber eher zur Feststellung der Ungleicheit verwendet. Wie der ternäre Operator funktioniert, demonstriert das folgende kleine Programm:
Übung: Bedingte Wertzuweisung
Programm: bedingteZuweisung.cpp
#include <iostream>
using namespace std ;
int main()
{
int a, b, max;
a = 1, b= 2;
cout << „Variable a ist: „;
cout << ((a!=1) ?“nicht eins, :“ : „eins,“);
cout << ((a%2!=0) ?“ungerade“ :“gerade“);
cout << endl << „Variable b ist: „;
cout << ((b!=1) ?“nicht eins, “ :“eins,“);
cout << ((b%2 !=0) ?“ungerade“ :“gerade“);
max = (a>b) ?a:b;
cout <<endl << „Der groessere Wert ist: “ <<max <<endl;
system („pause“);
return 0 ;
}
Speichern Sie das Programm, kompilieren Sie es anschließend und schauen Sie sich das Ergebnis an.
Dieser Artikel ist Teil unseres kostenlosen Workshops “C++ Programmieren lernen” – Geeignet für Einsteiger und Fortgeschrittene. Machen auch Sie mit und lernen Sie in 50 Artikeln, wie Sie Programme selbst schreiben!
Artikelbild: Fotolia / bramgino