Un 0 de trop dans une condition

bonjour , La réponse doit etre simple , mais pourquoi il me rajoute un 0 apres le A ?


int chiffreretour( int chiffre) {
  if (chiffre < 10) {
    Serial.print("0");
  }
  Serial.print(chiffre);
  Serial.print("A");
  
}

void setup() {
  Serial.begin(115200);
  Serial.print(chiffreretour(2));
  Serial.println(" ");
}

void loop() {
  

}

Reponse :

02A0

Ta fonction chiffreretour déclare retourner un int, mais ne le fait pas (il n'y a pas d'instruction return ... ). Le compilateur devrait te jeter, mais il a l'air sympa, ne dit rien et retourne, sans te le dire, la valeur 0.
Dans le setup, tu fais un print(chiffreretour(2));
Or dans chiffreretour(), tu fais déjà les print.
Ca écrit 02A, la fonction renvoie 0 (cf. ci-avant) au print qui est dans le setup, et donc ça ajoute un zéro.
Conclusion: décide toi.
Soit tu print la valeur dans la fonction chiffreretour(), mais cette fonction est de type void (et non int) et ne renvoie rien. Et dans le setup, tu l'invoques directement.
Soit la fonction fabrique une chaine de caractères, et renvoie cette chaine à son appelant, qui l'imprime.

ahh merci

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.