- Operador Composto
- Operador de Expressão
- Operador return
- Operador Condicional if-else
- Operador Ternário ?
- Operador switch
- Operador de loop while
- Operador de loop for
- Operador de loop do while
- Operador break
- Operador continue
- Operador de multiplicação de matrizes
- Operador de Criação de Objeto new
- Operação de Exclusão de Objeto delete
Operador Ternário ?
A forma geral do operador ternário é a seguinte:
expressão1 ? expressão2 : expressão3 |
Para o primeiro operando - "expressão1" - qualquer expressão que resulte em um valor do tipo bool pode ser usado. Se o resultado é true, então o operador definido pelo segundo operando, isto é, "expressão2", é executado.
Se o primeiro operando é false, o terceiro operando - "expressão3" é executado. Os segundo e terceiro operandos, isto é, "expressão2" e "expressão3" devem retornar valores de algum tipo e não devem ser do tipo void. O resultado da execução do operador condicional é o resultado de expressão2 ou o resultado de expressão3, dependendo do resultado de expressão1.
//--- diferença normalizada entre preços de abertura e fechamento para intervalo de um dia
|
Esta entrada é equivalente ao seguinte:
double true_range;
|
Restrições ao Uso do Operador #
Baseado no valor da "expressão1", o operador deve retornar um dentre dois valores - ou "expressão2" ou "expressão3". Existem várias limitações nessas expressões:
- Não confunda o tipo user-defined (definida pelo usuário) com o tipo simples ou enumerador. NULL pode ser usado para ponteiro.
- Se os tipos dos valores são simples, o operador será do tipo máximo (veja Conversão de Tipos (type casting)).
- Se algum dos valores é uma enumeração e o segundo valor é de um tipo numérico, a enumeração é substituída por int e a segunda regra é aplicada.
- Se ambos os valores são enumerações, seus tipos devem ser idênticos, e o operador será do tipo enumeração.
Restrições ao tipos user-defined (classes ou estruturas definidas pelo usuário):
- Os tipos devem ser idênticos ou um deve ser derivado do outro.
- Se os tipo não forem idênticos (herança), então a filha é implicitamente convertida para o pai, isto é, o operador será do tipo paterno.
- Não confunda objetos com ponteiros - ambas as expressão ou são objetos ou são ponteiros. NULL pode ser usado para ponteiro.
Observação
Cuidado ao usar o operador condicional como um argumento de uma função de sobrecarga, porque o tipo do resultado de um operador condicional é definido na durante a compilação do programa. E este tipo é definido como a maior dos tipos "expression2" e "expression3".
Exemplo:
void func(double d) { Print("double argumento: ",d); }
|
Também Veja
Inicialização de Variáveis, Visibilidade Escopo e Tempo de Vida de Variáveis, Criando e Excluindo Objetos