Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
C tiene un operador ternario: ¿el operador de expresión condicional (? :).
Sintaxis
condicional:
lógico-O-expresióncondicional de**:** de la expresión de **¿?**de la expresión de lógico
La lógico-O-expresión debe tener entero, la flotante, o tipo de puntero.Se evalúa en términos de su equivalencia en 0.un punto de secuencia sigue lógico-O- expresión.la evaluación de los operandos continúa como sigue:
si la lógico-O- expresión no es igual a 0, se evalúa la expresión .El resultado de evaluar la expresión es determinado por la expresiónno terminal.(Esto significa que la expresión se evalúa solo si la lógico-O-expresión es true).
Si la lógico-O-expresión equivale a 0, se evalúa la condicional .El resultado de la expresión es el valor de expresión condicional.(Esto significa que la condicional se evalúa solo si la lógico-O-expresión es false).
Observe que la expresión o expresión condicional se evalúa, pero no ambos.
El tipo de resultado de una operación condicional depende del tipo del operando de la expresión o de expresión condicional , como sigue:
Si la expresión o expresión condicional tiene entero o flotante tipo (sus tipos pueden ser diferentes), el operador realiza conversiones aritméticas usuales.El tipo del resultado es el tipo de los operandos después de conversión.
Si la expresión y expresión condicional tienen la misma estructura, unión, o tipo de puntero, el tipo del resultado es la misma estructura, unión, o tipo de puntero.
Si ambos operandos tienen el tipo void, el resultado es de tipo void.
Si el operando es un puntero a un objeto de cualquier tipo, y el otro operando es un puntero a void, el puntero al objeto se convierte en un puntero a void y el resultado es un puntero a void.
Si la expresión o expresión condicional es un puntero y el otro operando es una expresión constante con el valor 0, el tipo del resultado es el tipo de puntero.
En la comparación de los punteros, cualquier calificador de tipo (const o volatile) en el tipo al que el puntero apunta es insignificante, pero el tipo de resultado hereda los calificadores de ambos componentes de condicional.
Ejemplos
La los ejemplos siguientes se utiliza el operador condicional:
j = ( i < 0 ) ? ( -i ) : ( i );
este ejemplo asigna el valor absoluto de i a j.si es i menos de 0, -i se asigna a j.Si i es mayor o igual que 0, i se asigna a j.
void f1( void );
void f2( void );
int x;
int y;
.
.
.
( x == y ) ? ( f1() ) : ( f2() );
en este ejemplo, se declaran dos funciones, f1 y f2, y dos variables, x y y.Más adelante en el programa, si las dos variables tienen el mismo valor, se llama a la función f1 .Si no, se llama a f2 .