Estructuras de Controlc++operadorescomparaciónlógicacondiciones

Operadores de Comparación y Lógicos

Aprende a usar operadores de comparación y lógicos para crear condiciones en C++

OOI Oaxaca9 de febrero de 20266 min read

Operadores de comparación

Los operadores de comparación comparan dos valores y devuelven un booleano (true o false):

OperadorSignificadoEjemploResultado
==Igual a5 == 5true
!=Diferente de5 != 3true
<Menor que3 < 5true
>Mayor que5 > 3true
<=Menor o igual5 <= 5true
>=Mayor o igual5 >= 3true
int a = 10, b = 20;

cout << (a == b) << endl;  // 0 (false)
cout << (a != b) << endl;  // 1 (true)
cout << (a < b) << endl;   // 1 (true)
cout << (a > b) << endl;   // 0 (false)
cout << (a <= 10) << endl; // 1 (true)
cout << (b >= 20) << endl; // 1 (true)

Error común: = vs ==

int x = 5;

// ❌ INCORRECTO: Asignación, no comparación
if (x = 10) {  // Asigna 10 a x, siempre true
    cout << "Siempre se ejecuta" << endl;
}

// ✅ CORRECTO: Comparación
if (x == 10) {
    cout << "x es 10" << endl;
}

Operadores lógicos

Combinan múltiples condiciones:

OperadorNombreDescripción
&&AND (Y)Verdadero si ambos son verdaderos
||OR (O)Verdadero si al menos uno es verdadero
!NOT (NO)Invierte el valor

Tablas de verdad

AND (&&):

ABA && B
falsefalsefalse
falsetruefalse
truefalsefalse
truetruetrue

OR (||):

ABA || B
falsefalsefalse
falsetruetrue
truefalsetrue
truetruetrue

NOT (!):

A!A
falsetrue
truefalse

Ejemplos prácticos

Verificar rango

int edad;
cin >> edad;

// Verificar si está entre 18 y 65 años
if (edad >= 18 && edad <= 65) {
    cout << "Edad laboral" << endl;
}

Múltiples condiciones

int nota;
cin >> nota;

// Aprobado si nota >= 60 O si tiene puntos extra
bool tienePuntosExtra = true;

if (nota >= 60 || tienePuntosExtra) {
    cout << "Aprobado" << endl;
}

Negación

bool estaLloviendo = false;

if (!estaLloviendo) {
    cout << "Podemos salir" << endl;
}

Combinando operadores

int edad = 25;
bool tieneCarnet = true;
bool estaSobrio = true;

// Puede conducir si es mayor de 18, tiene carnet Y está sobrio
if (edad >= 18 && tieneCarnet && estaSobrio) {
    cout << "Puede conducir" << endl;
}

Precedencia de operadores

  1. ! (NOT) - Mayor prioridad
  2. <, <=, >, >=
  3. ==, !=
  4. && (AND)
  5. || (OR) - Menor prioridad
// Estas expresiones son equivalentes:
if (a > 5 && b < 10 || c == 0)
if (((a > 5) && (b < 10)) || (c == 0))

Recomendación: Usa paréntesis para mayor claridad.

Evaluación de cortocircuito

C++ deja de evaluar cuando ya conoce el resultado:

AND (&&)

Si el primer operando es false, no evalúa el segundo:

int x = 0;
if (x != 0 && 10/x > 2) {  // No hay división por cero
    // ...
}

OR (||)

Si el primer operando es true, no evalúa el segundo:

bool encontrado = true;
if (encontrado || funcionCostosa()) {  // No llama a funcionCostosa()
    // ...
}

Ejemplo: Año bisiesto

Un año es bisiesto si:

  • Es divisible por 4 Y no por 100, O
  • Es divisible por 400
int anio;
cin >> anio;

if ((anio % 4 == 0 && anio % 100 != 0) || (anio % 400 == 0)) {
    cout << "Es bisiesto" << endl;
} else {
    cout << "No es bisiesto" << endl;
}

Ejemplo: Validar triángulo

Un triángulo es válido si la suma de dos lados es mayor que el tercero:

int a, b, c;
cin >> a >> b >> c;

if (a + b > c && b + c > a && a + c > b) {
    cout << "Triángulo válido" << endl;
} else {
    cout << "Triángulo inválido" << endl;
}

Ejemplo: Verificar número primo (simplificado)

int n;
cin >> n;

bool esPrimo = true;

if (n < 2) {
    esPrimo = false;
} else {
    for (int i = 2; i * i <= n && esPrimo; i++) {
        if (n % i == 0) {
            esPrimo = false;
        }
    }
}

if (esPrimo) {
    cout << "Es primo" << endl;
} else {
    cout << "No es primo" << endl;
}

Ejercicios de práctica

Ejercicio 1

Verifica si un número está fuera del rango [1, 100].

Ver solución
int n;
cin >> n;

if (n < 1 || n > 100) {
    cout << "Fuera de rango" << endl;
} else {
    cout << "Dentro del rango" << endl;
}

Ejercicio 2

Determina si un carácter es una vocal.

Ver solución
char c;
cin >> c;
c = tolower(c);

if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
    cout << "Es vocal" << endl;
} else {
    cout << "No es vocal" << endl;
}

Ejercicio 3

Dados tres números, determina si pueden formar un triángulo rectángulo.

Ver solución
int a, b, c;
cin >> a >> b >> c;

// Encontrar el mayor
int mayor = max({a, b, c});
int suma = a + b + c - mayor;  // Suma de los otros dos

// Teorema de Pitágoras: a² + b² = c²
if (mayor * mayor == (a*a + b*b + c*c - mayor*mayor)) {
    cout << "Es triángulo rectángulo" << endl;
} else {
    cout << "No es triángulo rectángulo" << endl;
}

// O de forma más directa:
if (a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b) {
    cout << "Es triángulo rectángulo" << endl;
}

Siguiente paso

Aprende a usar Estructura de Control if-else para tomar decisiones en tus programas.