Compartilhar via


Operador condicional:? :

expression ? expression : expression

Comentários

O operador condicional (? :) é um operador Ternário (usa três operandos).O operador condicional funciona da seguinte maneira:

  • O primeiro operando é convertido implicitamente em bool.Ele é avaliado e todos os efeitos lado são concluídos antes de continuar.

  • Se o primeiro operando for avaliada como true (1), o segundo operando é avaliado.

  • Se o primeiro operando for avaliada como false (0), o terceiro operando é avaliado.

O resultado do operador condicional é o resultado de qualquer operando é avaliado — a segunda ou terceira.Apenas um dos últimos dois operandos é avaliado em uma expressão condicional.

Expressões condicionais têm associatividade da direita para a esquerda.O primeiro operando deve ser do tipo da integrais ou de ponteiro.As seguintes regras aplicam-se para a segunda e terceira expressões:

  • Se as duas expressões forem do mesmo tipo, o resultado é desse tipo.

  • Se ambas as expressões são de tipos de aritmética ou enumeração, conversões aritméticas usuais (abordados na Conversões aritméticas) são realizadas para convertê-los em um tipo comum.

  • Se ambas as expressões são de tipos de ponteiro ou se um é um tipo de ponteiro e a outra é uma expressão de constante que é avaliada como 0, as conversões de ponteiro são executadas para convertê-los em um tipo comum.

  • Se as duas expressões são de tipos de referência, conversões de referência são executadas para convertê-los em um tipo comum.

  • Se as duas expressões forem do tipo void, o tipo comum é tipo void.

  • Se ambas as expressões são de um determinado tipo de classe, o tipo comum é aquele tipo de classe.

Qualquer combinação de segundo e terceiro operandos não na lista anterior é ilegais.O tipo do resultado é o tipo comum e é um l-value se tanto os segundo e terceiro operandos forem do mesmo tipo e ambos são valores de l.

Exemplo

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

Consulte também

Referência

Operadores do C++

Precedência e associatividade de operadores

Conceitos

Operador de expressão condicional