Menu
CoddyTech

Quand un int arrive à sa limite

Fait partie de la section Premiers circuits du Journey Arduino de Coddy. Leçon 12 sur 22.

Une variable est stockée dans un nombre fixe de bits, de minuscules interrupteurs marche/arrêt dans la mémoire de la carte. Sur l’Uno, un int comporte 16 bits, il ne peut donc contenir que des nombres de -32,768 à 32,767.

Si on dépasse la limite supérieure, le nombre n’augmente pas : il revient à la limite inférieure. 32,767 plus 1 devient -32,768. C’est ce qu’on appelle un débordement, et le programme ne donne aucun avertissement.

Pour les nombres plus grands, utilisez un type avec davantage de bits :

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

long comporte 32 bits. unsigned long comporte 32 bits, mais ne peut pas contenir de nombres négatifs : il peut donc aller deux fois plus haut, ce qui est pratique pour les comptages et les durées.

Un long occupe deux fois plus de mémoire qu’un int, et l’Uno ne dispose que de 2048 octets pour les variables ; utilisez donc int lorsque les nombres restent petits.

challenge icon

Défi

Moyen

Le programme de départ ajoute 1000 à count vingt fois par seconde. Appuie sur Exécuter et regarde-le devenir négatif après 32,000.

  • change le type de count pour qu’il puisse compter au-delà de 100,000

Ensuite, Vérifie.

Essayez vous-même

int count = 0;

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

void loop() {
  count = count + 1000;
  Serial.println(count);
  delay(50);
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Premiers circuits

Entraînez-vous par vous-même : Playground Arduino