Operator warunkowy:? :
expression ? expression : expression
Uwagi
Operator warunkowy (? :) jest trójargumentowy (ma trzy operandy).Operator warunkowy działa w następujący sposób:
Pierwszy operand jest niejawnie konwertowane na bool.Sprawdzana jest zgodność i wszystkie efekty uboczne są wypełnione przed kontynuowaniem.
Jeśli wynikiem pierwszego operandu true (1), drugi operand jest oceniane.
Jeśli wynikiem pierwszego operandu false (0), trzeci argument jest oceniane.
Wynik operator warunkowy jest wynikiem jest oceniane niezależnie od operandu — drugi lub trzeci.Tylko jeden z ostatnich dwóch operandach jest oceniany w wyrażeniu warunkowym.
Wyrażenia warunkowe mieć łączność od prawej do lewej.Pierwszy operand musi być typu Całka lub wskaźnik.Następujące zasady stosuje się do drugiego i trzeciego wyrażeń:
Jeśli oba wyrażenia są tego samego typu, to wynik jest tego typu.
Jeśli oba wyrażenia są typy operacji arytmetycznych lub wyliczanie zwykłymi konwersje arytmetycznych (omówione w Arytmetyczne konwersje) są wykonywane w celu przekonwertowania ich na wspólne typu.
Jeśli oba wyrażenia są typami wskaźników lub jeśli jest jeden typ wskaźnika, a druga jest wyrażenie stałe, którego wynikiem jest 0, wskaźnik zestawami ich konwersja na typ wspólne.
Jeśli oba wyrażenia są typy odwołań, odniesienia są zestawami ich konwersja na typ wspólne.
Jeśli oba wyrażenia są typu void, typ wspólnej jest typu void.
Jeśli oba wyrażenia są typu danej klasy, wspólne typu jest tego typu klasy.
Dowolnej kombinacji operandy drugiego i trzeciego w powyższej listy nie są dozwolone.Typ wynik jest typu wspólne i jest wartością l, jeśli oba operandy drugi i trzeci są tego samego typu i są obie wartości l.
Przykład
// expre_Expressions_with_the_Conditional_Operator.cpp
// compile with: /EHsc
// Demonstrate conditional operator
#include <iostream>
using namespace std;
int main() {
int i = 1, j = 2;
cout << ( i > j ? i : j ) << " is greater." << endl;
}
Zobacz też
Informacje
Priorytet i łączność operatorów