Constante locale dynamique

Bonjour

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

void loop() {
  // constante dynamique
  const unsigned long time = millis();
  Serial.println ( time);
  delay(100);
}

Je ne comprends pas que time soit actualisé.

Merci de votre attention.
Cordialement,
bidouilleelec

Bon réveillon.

C’est une constante locale non static au sein d’une fonction, pourquoi ne serait elle pas initialisée ? (Const veut dire que vous vous interdisez de la modifier plus tard, mais quand la fonction a fini de s’éxecuter elle disparaît et au prochain tour de loop() (qui est un nouvel appel de fonction) elle est recréée et donc ré-initialisée)

Si vous rajoutez qu’elle est static alors elle survit à l’appel de la fonction et ne sera pas réinitilisée (un static est initialisée qu’une fois)

Bon réveillon!

Bonjour J-M-L

Merci
Je pensais qu'une constante était une constante où qu'elle soit déclarée.
Je ne vois pas l'intérêt de déclarer une constante locale si elle est réinitialisée.
Autant utiliser une variable?

Cordialement,
bidouilleelec

Salut!
un const doit bien s’initialiser... il n’est initialisé qu’une seule fois pour toute sa durée de vie (portée de la,variable). Donc si c’est un static ou global alors il n’y aura qu’une seule initialisation, si c’est une variable locale, alors elle sera initialisée à,sa création, c’est à dire quand vous rentrez dans la fonction

Il y a plusieurs intérêts

  • vous dites au compilateur que cette « variable » ne va pas varier, donc si plus tard vous essayez de la modifier il va vous le dire.. ça aide à débogguer
  • Suivant son type (un octet par exemple dans lequel on met une constante numérique - genre N° de pin) le compilateur sachant que cet élément ne varie pas, il peut directement remplacer la constante par sa valeur plutôt que d’aller chercher une valeur en mémoire —> c’est bcp plus rapide et vous gagnez un octet de RAM