Bedingungsoperator
Nach oben zu Binäre Operatoren - Index
Syntax
logischer OR-Ausdruck ?: Bedingungs-Ausdruck
Bemerkungen
Der Bedingungsoperator ?: ist ein dreiteiliger Operator.
Im Ausdruck E1 ? E2 : E3
wird E1
zuerst ausgewertet. Wenn sein Wert true ist, so wird danach E2
ausgewertet und E3
ignoriert. Wenn E1
false ergibt, so wird E3
ausgewertet und E2
ignoriert.
Das Ergebnis von E1 ? E2 : E3
ist entweder der Wert von E2
oder von E3
, abhängig davon, welcher dieser Werte ausgewertet wurde.
E1
muss ein Ausdruck von skalarem Typ sein. E2
und E3
müssen einer der folgenden Regeln entsprechen:
- Beide sind arithmetische Typen. In diesem Fall unterliegen
E2
undE3
den arithmetischen Standardkonvertierungen und das Ergebnis entspricht dem üblichen Ergebnistyp dieser Konvertierungen. - Beide Operanden sind kompatible Struktur- oder Varianten-Typen. Das Ergebnis ist vom Struktur- oder Varianten-Typ von
E2
undE3
. - Beide Operanden sind vom Typ void. Das Ergebnis ist vom Typ void.
- Beide Operanden sind Zeiger auf qualifizierte oder unqualifizierte kompatible Typen. Als Ergebnis erhalten Sie einen Typ, der ein Zeiger auf einen Typ ist, der alle Typqualifizierer der Typen besitzt, auf die beide Operanden zeigen.
- Einer der Operanden ist ein Zeiger, der andere eine Nullzeiger-Konstante. Als Ergebnis erhalten Sie einen Typ, der ein Zeiger auf einen Typ ist, der alle Typqualifizierer der Typen besitzt, auf die beide Operanden zeigen.
- Ein Operand ist ein Zeiger auf ein Objekt oder auf einen unvollständigen Typ, und der jeweils andere ist ein Zeiger auf eine qualifizierte oder unqualifizierte Version des Typs void. Als Ergebnis erhalten Sie einee Nullzeiger-Konstante auf den Operanden void.