Tipos de datos en C++: int, double, char, bool

Respuesta corta: un tipo le dice al compilador cuántos bytes necesita un valor y qué significan esos bytes. Los cuatro con los que vivirás como principiante: int (números enteros), double (decimales), char (un carácter — que en realidad es un número pequeño) y bool (verdadero/falso, impreso como 1/0).

Los cuatro, en un solo programa

#include <iostream>
using namespace std;

int main() {
    int    age   = 25;     // números enteros
    double price = 9.99;   // decimales
    char   grade = 'A';    // UN carácter, comillas simples
    bool   ok    = true;   // verdadero o falso

    cout << age << " " << price << " " << grade << " " << ok << endl;
    return 0;
}

Dos cosas que conviene notar: grade usa comillas simples ('A', no "A" — eso es un string, y mezclarlos es un error de compilación clásico), y ok se imprime como 1, no como true: cout muestra los bool como números salvo que pidas boolalpha.

Los cuatro tipos, uno por uno

TipoGuardaTamaño típicoOjo con
intNúmeros enteros4 bytesDesbordamiento más allá de ≈ ±2.1 mil millones; 7/2 es 3
doubleDecimales8 bytes0.1 + 0.2 ≠ exactamente 0.3 (imprecisión de coma flotante)
charUn carácter1 byte'a' frente a "a"; en realidad es un número
booltrue / false1 byteSe imprime como 1/0; cualquier número distinto de cero se convierte en true

Los tamaños son «típicos» porque el estándar de C++ fija mínimos, no valores exactos — en el compilador de tu escritorio, sizeof(int) imprime la respuesta real para tu máquina.

char es un número disfrazado

Cada carácter se guarda como un código entero (ASCII): 'A' es 65, 'a' es 97 y '0' es 48. Por eso puedes hacer aritmética con caracteres:

#include <iostream>
using namespace std;

int main() {
    char c = 'A';
    cout << c << " is code " << (int)c << endl;
    cout << "next letter: " << (char)(c + 1) << endl;
    cout << "digit '7' as number: " << '7' - '0' << endl;
    return 0;
}

La última línea — '7' - '0' — es una expresión idiomática de nivel entrevista de verdad: convierte un carácter dígito en su valor numérico. '7' tiene código 55 y '0' tiene código 48, así que la resta deja exactamente 7 — y funciona con todos los dígitos, sin tabla de conversión.

Cómo falla cada tipo

Elegir entre int y double: el árbol de decisión para principiantes

  1. ¿El valor puede tener alguna vez una fracción? (media, precio, porcentaje) → double.
  2. ¿Es un conteo, un índice, un año, una puntuación? → int.
  3. ¿Necesitas más de ±2.1 mil millones? → long long en un compilador de escritorio (nuestro playground cubre el núcleo didáctico; consulta la guía de configuración del compilador).
  4. ¿Dinero? → céntimos enteros. En serio.

Preguntas de entrevista sobre tipos

  1. «¿Qué imprime cout para un bool?» — 1 o 0; cout << boolalpha cambia a true/false.
  2. «¿Por qué 7 / 2 es igual a 3?» — ambos operandos son int, así que la división es división entera (guía completa: aquí).
  3. «¿Cuál es la diferencia entre 'A' y "A"?» — un char (un byte, código 65) frente a un string (un array que termina en '\0').
  4. «¿Qué pasa cuando un int se desborda?» — el desbordamiento con signo es comportamiento indefinido: ni excepción ni vuelta confiable; el compilador puede asumir que nunca ocurre.
  5. «¿Por qué es útil la aritmética con char?» — conversión de dígitos ('7' - '0'), conversión de mayúsculas y minúsculas (c - 'a' + 'A') y es la base misma de cómo funciona el procesamiento de texto.

Práctica

Relacionado: división entera, paso por valor vs puntero vs referencia, 15 preguntas de entrevista para principiantes.