Menu
CoddyTech

Cuando un int se queda sin espacio

Parte de la sección Primeros circuitos del Journey de Arduino de Coddy. Lección 12 de 22.

Una variable se almacena en un número fijo de bits, pequeños interruptores de encendido y apagado en la memoria de la placa. En el Uno, un int tiene 16 bits, por lo que solo puede almacenar números de -32,768 a 32,767.

Si superas el límite superior, no crece: vuelve al límite inferior. 32,767 más 1 se convierte en -32,768. Esto se llama desbordamiento, y el sketch no muestra ninguna advertencia.

Para números más grandes, usa un tipo con más bits:

long big = 100000;           // -2,147,483,648 a 2,147,483,647
unsigned long huge = 3000000000;  // 0 a 4,294,967,295

long tiene 32 bits. unsigned long tiene 32 bits, pero no admite números negativos, así que puede llegar al doble: es útil para conteos y tiempos.

Un long ocupa el doble de memoria que un int, y el Uno solo tiene 2048 bytes para variables, así que usa int cuando los números sean pequeños.

challenge icon

Desafío

Intermedio

El código inicial suma 1000 a count veinte veces por segundo. Pulsa Ejecutar y observa cómo se vuelve negativo después de 32.000.

  • cambia el tipo de count para que pueda contar más allá de 100.000

Después, Comprueba.

Pruébalo tú mismo

int count = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  count = count + 1000;
  Serial.println(count);
  delay(50);
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Primeros circuitos

Practica por tu cuenta: Playground de Arduino