J’essaie de faire un tableau de structure pour imprimer plus facilement les valeurs de mes booléens, mais je n’y arrive pas. Je n’arrive pas à trouver où est ce que je fait faut.
J’étais parti sur la numérotation des char[] qui commence à zéro. Donc un char[3] (0,1,2) pour 3 caractères, (3) pour un zéro d’arrêt. Mais apparemment, cela commence à 1 !
Comme le dit @lesept les indices commencent à 0, mais quand tu fais char offon[4], tu as offon[0],offon[1],offon[2],offon[3] donc effectivement 4 éléments.
En général, on boucle comme ceci : for (int i = 0; i < 4 ;i++)
Pour un tableau de dimension N, tu boucles avec le test < N
Si tu vas plus loin, tu continues à afficher ce qui se trouve plus loin dans la mémoire de ton micro, mais qui n'a rien à voir avec le contenu de ton tableau.
Cette fois j’y suis, si je met [4] c’est le nombre d’éléments (4 octets) . Ce n’est pas comme je pensais , le numéro du dernier élément (5 octets).
C'est une bonne idée, mais je voulais comprendre ce qui clochai dans mon code.
Un bool c'est un 0 ou un 1, pourquoi ne pas l'utiliser comme indice ?
Dans mon programme (pas dans le petit code ci-dessus), ils représentent l'état des leds, des capteurs, des inverseurs (normalement fermé ou ouvert), ...
j'ai fait ça pour simplifier l'impression de rapports, au-lieux de faire un if...else... pour chaque booléen, je fais Serial.print(F("Capteur1 est à ")); Serial.println(OffOn[capt1].offon);
Je ne vois pas comment utiliser "enum" pour imprimer "On" ou "Off" selon l'état de chaque bool !
Merci beaucoup pour tous ses renseignements.
Bonne journée à vous.
non, pas en C++ - c'est un type à part entière (valeur de vérité) qui effectivement se promeut pour des raisons historiques en 0 et 1 quand il est utilisé à la place d'une valeur numérique mais ce n'est pas une bonne raison pour "tordre" la conformité des types.
un enum est plus adapté (ou des constantes voire un #define)
vous typez votre enum et utilisez ce type pour votre variable d'état