Условный оператор: ? :
expression ? expression : expression
Заметки
Условный оператор (- .троичный) оператор (он занимает 3 операнда).Условный оператор работает следующим образом:
Первый операнд неявно преобразуется в тип bool.Оно вычисляется и все побочные эффекты завершены перед тем как продолжить.
Если первый операнд имеет значение true (1), второй операнд вычисляется.
Если первый операнд имеет значение false (0), третий операнд вычисляется.
Результат условного оператора результат любого операнд оценивается - второй и третий.Только последние 2 операндов вычисления в условном выражении.
Условные выражения имеют справа налево ассоциативность.Первый операнд должен иметь целочисленные или типа указателя.Следующие правила применяются к вторым и третьим выражений:
Если оба выражения имеют одинаковый тип, то результат этого типа.
Если оба выражения типов арифметики или перечисления, обычные арифметические преобразования (покрытые in арифметические преобразования) выполните, чтобы преобразовать их к общему типу.
Если оба выражения имеют тип указателя или если такой тип указателя, и другое выражение, константы, имеющим значение 0, преобразования указателей выполняются для преобразования их к общему типу.
Если оба выражения ссылочных типов, преобразования ссылок выполняются для преобразования их к общему типу.
Если оба выражения имеют тип void, то общий тип void типа.
Если оба выражения данного типа класса, то общий тип этот тип класса.
Все сочетания второй и третий операндов не недопустимые в предыдущем списке.Тип результата общего типа и l-значение, если а второе и третье операнды одного типа и оба левостороннего значения.
Пример
// 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;
}
См. также
Ссылки
Operator precedence and Associativity