next up previous contents
Next: inline Funktionen Up: Operatoren Previous: Vergleichs- und logische Operatoren

Weitere Operatoren

Der einzige ternäre Operator ist ?:, der zur Selektion von Subausdrücken (gleichen Typs) dient. Falls der Ausdruck links von ? wahr ist, wird der erste, sonst der zweite Ausdruck verwendet (siehe Abschnitt [*]).

  int i;
  std::cout << (i > 0) ? i : 0;     // never prints a negative number

Der Operator () bewirkt Funktionsaufruf, [] dient als Indizierungsoperator für Zeiger und Felder, ein Punkt '.' zur Auswahl eines Elementes aus einer Struktur und -> dem gleichen Zweck, wenn ein Pointer auf eine Struktur gegeben ist.

struct Person {
  string name;
  int age;
};

void f(){
  Person    p;
  Person *p_p = &p; 
  p.age    = 25;
  p_p->age = 25;  // equivalent
}
Die unären Operatoren * und & dienen zum Finden des Wertes einer Zeigervariablen, bzw. zum Finden der Adresse einer (beliebigen) Variablen (siehe Kapitel [*]).

Operatorausdrücke werden nach den in C üblichen Regeln für Rang und ggf. bei Mehrfachvorkommen mit der in Tafel [*] zusammengefaßten Assoziativität behandelt:


Tabelle: Bindungsstärke (Priorität) und Assoziativität von Operatoren
Operator Auswertung von
:: links nach rechts
() [] -> . X++ X-- typeid XXX_cast<TYPE>() links nach rechts
! ~ ++X --X + - * & (TYPE) sizeof new delete rechts nach links
.* ->* links nach rechts
* / % links nach rechts
+ - links nach rechts
>> << links nach rechts
< <= > >= links nach rechts
== != links nach rechts
& links nach rechts
^ links nach rechts
| links nach rechts
&& links nach rechts
|| links nach rechts
|| links nach rechts
= *= /= %= += -= <<= >>= &= |= ^= rechts nach links
?: rechts nach links
throw -
, links nach rechts



next up previous contents
Next: inline Funktionen Up: Operatoren Previous: Vergleichs- und logische Operatoren
© R.Hilfer et al., ICA-1, Univ. Stuttgart
28.6.2002