Условный оператор: ? :

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;
}

См. также

Ссылки

Операторы C++

Operator precedence and Associativity

Основные понятия

Оператор условного выражения