Operador condicional: ¿? :
expression ? expression : expression
Comentarios
¿El operador condicional (? :) es un operador ternario (utiliza tres operandos).el operador condicional funciona como sigue:
El primer operando se convierte implícitamente en bool.Se evalúa y todos los efectos secundarios se completa antes de continuar.
Si el primer operando se evalúa como TRUE (1), se evalúa el segundo operando.
Si el primer operando se evalúa como Falso (0), se evalúa el tercer operando.
El resultado del operador condicional es el resultado de se evalúa cualquier operando — el segundo o el tercero.Solo uno de los operandos pasados se evalúa en una expresión condicional.
Las expresiones condicionales tienen de derecha a izquierda asociatividad.El primer operando debe ser entero o de puntero.Las reglas siguientes se aplican a la segunda y tercera expresiones:
Si ambas expresiones son del mismo tipo, el resultado es de ese tipo.
Si ambas expresiones son de aritmética o de tipos de enumeración, conversiones aritméticas usuales (tratadas en conversiones aritméticas) se realizan para convertirlos en un tipo común.
Si ambas expresiones son de tipos de puntero o si uno es un tipo de puntero y otro es una expresión constante que se evalúa en 0, las conversiones de puntero se realizan para convertirlos en un tipo común.
Si ambas expresiones son tipos de referencia, las conversiones de referencia se realizan para convertirlos en un tipo común.
Si ambas expresiones son de vacía del tipo, el tipo común es de tipo void.
Si ambas expresiones son de un tipo de clase determinado, el tipo común es ese tipo de clase.
Cualquier combinación de segundo y tercer operandos no en la lista anterior no es válida.El tipo del resultado es el tipo común, y es un valor l si el segundo y tercer operandos son del mismo tipo y ambos son l.
Ejemplo
// 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;
}
Vea también
Referencia
Operador Prioridad y Asociatividad