Menu
CoddyTech

Quando un int si esaurisce

Fa parte della sezione Primi circuiti del percorso Arduino di Coddy. Lezione 12 di 22.

Una variabile viene memorizzata in un numero fisso di bit, minuscoli interruttori acceso/spento nella memoria della scheda. Sulla Uno, un int ha 16 bit, quindi può contenere solo numeri da -32,768 a 32,767.

Se superi il valore massimo, non aumenta: ricomincia dal valore minimo. 32,767 più 1 diventa -32,768. Questo si chiama overflow e lo sketch non mostra alcun avviso.

Per numeri più grandi, usa un tipo con più bit:

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

long ha 32 bit. unsigned long ha 32 bit ma non può contenere numeri negativi, quindi può arrivare al doppio: è utile per conteggi e tempi.

Un long occupa il doppio della memoria di un int e la Uno ha solo 2048 byte per le variabili, quindi usa int quando i numeri rimangono piccoli.

challenge icon

Sfida

Medio

Il codice iniziale aggiunge 1000 a count venti volte al secondo. Premi Esegui e guarda come diventa negativo dopo 32,000.

  • cambia il tipo di count in modo che possa contare oltre 100,000

Poi Verifica.

Provalo tu

int count = 0;

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

void loop() {
  count = count + 1000;
  Serial.println(count);
  delay(50);
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Primi circuiti

Esercitati da solo: Playground Arduino