Oui, ça a tout son sens! Ma proposition est simplement sortie de son contexte, l'essentiel n'est pas l'initialisation d'une variable mais un test d'égalité dans un if(), il fallait simplement comprendre qu'un test d'égalité dans un if() a, pour le commun des mortels, toujours un double =, c'est pour ça que je les avais mis en évidence.
Est-ce-que ce que l'on lit sur le port Button est égal à la variable Button, hors contexte, est tout à fait plausible. Il n'y a pas de faute de logique.
Avec cette écriture, ButtonValue ne recevra jamais d'autre valeur que sa valeur initiale, c'est à dire ZÉRO.
Autant écrire : if (0 == digitalRead(Button)){
Disons que votre affirmation manquait de contexte puisque vous n’avez pas repris cette écriture dans votre code proposé donc le contexte était plutôt le post précédent qui était correct mais maladroit et votre qualification de meilleur donc erronée (puisque si l’OP l’avait adoptée cela ne fonctionnait plus).
Bref c’était juste pour clarifier que votre point ne s’appliquait pas au code mais était une remarque plus générale sur l’affectation versus le test d’égalité en c++, comme vous l’avez ensuite expliqué ensuite.