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 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 : bdaasices verdadera ybsi 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 ||.