Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


2.9. Operador condicional: ?

En C hay otra forma de asignar un valor según si se cumple una condición o no. Es el "operador condicional" ? : (también conocido como "operador ternario"), que se usa:

nombreVariable = condición ?  valor1 : valor2;

y equivale a decir "si se cumple la condición, la variable nombreVariable debe tomar el valor valor1; si no, tomará el valor valor2". Un ejemplo de cómo podríamos usarlo sería para calcular el mayor de dos números:

  numeroMayor = a > b ?  a : b;

esto equivale a la siguiente orden "if":

    if ( a > b )
        numeroMayor = a;
    else
        numeroMayor = b;

Al igual que en este ejemplo, podremos usar el operador condicional cuando queramos optar entre dos valores posibles para una variable, dependiendo de si se cumple o no una condición.

Aplicado a un programa sencillo, podría ser

/*  ej020901.c                */
/*  El operador condicional   */
/*  Ejemplo del apartado 2.9  */
/*  Curso de C, Nacho Cabanes */

#include 

int main()
{
    int a, b, mayor;

    printf("Escriba un número: ");
    scanf("%d", &a);
    printf("Escriba otro: ");
    scanf("%d", &b);
    mayor = a > b ?  a : b;
    printf("El mayor de los números es %d.\n", mayor);

    return 0;
}

Realmente, no es necesario guardar en una variable el resultado de la condición. Se podría usar directamente, por ejemplo en un "printf", así:

/*  ej020902.c                  */
/*  El operador condicional (2) */
/*  Ejemplo del apartado 2.9    */
/*  Curso de C, Nacho Cabanes   */

#include 

int main()
{
    int a, b;

    printf("Escriba un número: ");
    scanf("%d", &a);
    printf("Escriba otro: ");
    scanf("%d", &b);
    printf("El mayor de los números es %d.\n", a > b ?  a : b);

    return 0;
}

Un tercer ejemplo, que sume o reste dos números según la opción que se escoja, sería:

/*  ej020903.c                  */
/*  El operador condicional (3) */
/*  Ejemplo del apartado 2.9    */
/*  Curso de C, Nacho Cabanes   */

#include 

int main()
{
    int a, b, resultado;
    int operacion;

    printf("Escriba un número: ");
    scanf("%d", &a);
    printf("Escriba otro: ");
    scanf("%d", &b);
    printf("Escriba una operación (1 = resta; otro = suma): ");
    scanf("%d", &operacion);
    resultado =  operacion == 1 ?  a-b : a+b;
    printf("El resultado es %d.\n", resultado);

    return 0;
}

Ejercicio propuesto 2.9.1: Crea un programa que use el operador condicional para mostrar un el valor absoluto de un número, de la siguiente forma: si el número es positivo, se mostrará tal cual; si es negativo, se mostrará cambiado de signo.
Ejercicio propuesto 2.9.2: Crea un programa que use el operador condicional para dar a una variable llamada "iguales" (entera) el valor 1 si los dos números que ha tecleado el usuario son iguales, o el valor 0 si son distintos.
Ejercicio propuesto 2.9.3: Usa el operador condicional para calcular el menor de dos números.