exemple classique :
compteur++;
if (compteur == valeur max) compteur = 0;
ne vaut-il pas mieux mettre ?
if (compteur >= valeur max) compteur = 0;
pourquoi ?
exemple classique :
compteur++;
if (compteur == valeur max) compteur = 0;
ne vaut-il pas mieux mettre ?
if (compteur >= valeur max) compteur = 0;
pourquoi ?
La seconde condition couvre le cas ou le compteur serait hors de la fourchette 0 - valeur max
Avec un timer qui compte en microseconds, il faudrait un sacré coup de bol pour que le test tombe pile au moment où la condition est satisfaite.
mais là c'est pas un timer, juste un compteur qu'on incrémente
Si on est sûr que le compteur s'incrémente de 1, c'est strictement équivalent. Mais par sécurité la deuxième est meilleure.
Avec un timer qui compte en microseconds, il faudrait un sacré coup de bol pour que le test tombe pile au moment où la condition est satisfaite.
Même avec millis( ) qui peut s’incrémenter de 1 ou de 2.
en 1ère approche, ça a l'air + sécuritaire, mais pourquoi veux-tu qu'on loupe le (compteur == valeur max) ?
Cela dépend du contexte.
Dans une boucle toute bête, il n'y a aucune raison que cela arrive mais dans un programme un peu plus complexe dans lequel la variable en question pourrait être modifiée par un événement hors de la boucle alors oui cela s'impose.
Un truc bête et méchant:
void setup() {
Serial.begin(115200);
Serial.println("Plus grand ou égal:");
int x = 0;
while (1) {
if (x >= 11) break;
x ++;
Serial.println(x);
x ++;
Serial.println(x);
delay(500);
}
Serial.println("Egal:");
x = 0;
while (1) {
if (x == 11) break;
x ++;
Serial.println(x);
x ++;
Serial.println(x);
delay(500);
}
}
void loop() {
// put your main code here, to run repeatedly:
}
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.