DMarlon Studio

Lección 7 · 7 de 20

Comparaciones y lógica · C

Compare valores en C con ==, !=, <, >= y combine condiciones con &&, || y !. Verdadero es 1 y falso es 0; además, el operador ternario ?:.

C · Comparaciones y lógica en DMarlon Studio: el código del ejemplo y su salida en la terminal

C no tiene un tipo propio para verdadero y falso en su forma más básica: 0 es falso y cualquier otro número es verdadero. Por eso una comparación como age == 15 da 1 si se cumple y 0 si no, como muestran las tres primeras líneas de la salida.

Los operadores de comparación son == (igual), != (distinto), <, >, <= y >=. No confunda `==`, que compara, con =, que asigna: if (lives = 0) guardaría un 0 en lives y la condición sería siempre falsa.

Para combinar condiciones están `&&` (y), que exige que se cumplan las dos, `||` (o), que se conforma con una, y `!` (no), que invierte el resultado. Con has_ticket a 1 y 1.42 metros se puede subir a la montaña rusa; con 15 años no hay precio reducido, y !has_ticket es falso, así que no pide entrada.

age >= 13 && age <= 17 comprueba un intervalo, y su resultado (1) se puede guardar en una variable. El operador ternario teen ? "yes" : "no" elige un valor u otro según la condición, muy práctico dentro de printf.

Código · main.c

#include <stdio.h>int main(void) {    int age = 15;    int has_ticket = 1;  // in C, 0 is false and any other number is true    double height = 1.42;    // A comparison gives 1 (true) or 0 (false).    printf("age == 15: %d\n", age == 15);    printf("age != 18: %d\n", age != 18);    printf("age >= 18: %d\n", age >= 18);    // && (and): both sides must be true.    if (has_ticket && height >= 1.40) {        printf("You can ride the roller coaster.\n");    }    // || (or): at least one side must be true.    if (age < 12 || age >= 65) {        printf("Reduced price.\n");    } else {        printf("Full price.\n");    }    // ! (not) turns true into false and false into true.    if (!has_ticket) printf("Buy a ticket first.\n");    // A range: from 13 to 17, both included.    int teen = age >= 13 && age <= 17;    // condition ? a : b picks a when true, b when false.    printf("Teenager? %s\n", teen ? "yes" : "no");    // Remember: = assigns a value, == compares two values.    int lives = 0;    if (lives == 0) printf("Game over.\n");    return 0;}

Salida · cc main.c -o main && ./main

age == 15: 1
age != 18: 1
age >= 18: 0
You can ride the roller coaster.
Full price.
Teenager? yes
Game over.

Para recordar

  • En C, 0 es falso y cualquier otro valor es verdadero.
  • == compara; = asigna.
  • && exige las dos condiciones; ||, al menos una.
  • ! invierte una condición.
  • c ? a : b da a si c es verdadera y b si no.

Ejercicio

Añada una variable with_adult y permita subir a la montaña rusa a quien mida al menos 1.20 metros si va acompañado, o 1.40 si va solo, en una sola condición con && y ||.