Compartilhar via


Operador de expressão condicional

C tem um operador Ternário: o operador condicional-expression (? :).      

Sintaxe

  • expressão condicional:
    expressão lógica OR

    expressão lógica OR ? expressão : - expressão condicional

O expressão lógica OR deve ser do tipo integral, flutuante ou ponteiro.Ela é avaliada em termos de sua equivalência como 0.Um ponto de seqüência segue expressão lógica OR.Avaliação dos operandos continua da seguinte maneira:

  • Se expressão lógica OR não é igual a 0, expressão é avaliada.O resultado da avaliação da expressão é dado pela nonterminal expressão.(Isso significa expressão é avaliada somente se expressão lógica OR é verdadeiro.)

  • Se expressão lógica OR é igual a 0, - expressão condicional é avaliada.O resultado da expressão é o valor de - expressão condicional.(Isso significa - expressão condicional é avaliada somente se expressão lógica OR é false.)

Observe que tanto expressão ou - expressão condicional é avaliado, mas não ambos.

O tipo de resultado de uma operação condicional depende do tipo da expressão ou - expressão condicional operando, da seguinte maneira:

  • Se expressão ou - expressão condicional tem integral ou flutuante tipo (seus tipos podem ser diferentes), do operador realiza conversões aritméticas usuais.O tipo do resultado é o tipo dos operandos após a conversão.

  • Se ambos os expressão e - expressão condicional tem a mesma estrutura, união ou tipo de ponteiro, o tipo do resultado é o mesmo tipo de estrutura, união ou ponteiro.

  • Se ambos os operandos tem o tipo de void, o resultado tem o tipo de void.

  • Se qualquer operador for um ponteiro para um objeto de qualquer tipo e o outro operando é um ponteiro para void, o ponteiro para o objeto é convertido em um ponteiro para void e o resultado é um ponteiro para void.

  • Se qualquer um dos expressão ou - expressão condicional é um ponteiro e o outro operando é uma expressão constante com o valor 0, o tipo do resultado é o tipo de ponteiro.

Na comparação de tipo para ponteiros, qualquer tipo de qualificadores (const ou volatile) no tipo ao qual os pontos de ponteiro são insignificantes, mas o tipo de resultado herda os qualificadores de ambos os componentes do condicional.

Exemplos

Os exemplos a seguir mostram os usos do operador condicional:

j = ( i < 0 ) ? ( -i ) : ( i );

Este exemplo atribui o valor absoluto de i para j.Se i for menor que 0, -i é atribuída a j.Se i é maior que ou igual a 0, i é atribuída a j.

void f1( void );
void f2( void );
int x;
int y;
    .
    .
    .
( x == y ) ? ( f1() ) : ( f2() );

Neste exemplo, duas funções, f1 e f2e duas variáveis, x e y, são declarados.Posterior no programa, as duas variáveis têm o mesmo valor, a função f1 é chamado.Caso contrário, f2 é chamado.

Consulte também

Referência

Operador condicional:? :