Utilisation du type de données Arduino “ booléen ” au lieu du type de données “ booléen ” type de données

Il existe un type de données Arduino spécial et non standard appelé " boolean ".

Comment se compare-t-il avec le type de données C ++ standard " bool ", et quelles sont les raisons dutiliser lun ou lautre?

Sils sont identiques dans leur utilisation, pourquoi les deux existent-ils et lequel est préféré dans le code Arduino?

Commentaires

  • Ceci est une question de programmation de base, non spécifique à Arduino. Le guide et la liste des livres définitifs sur le C ++ . Ou Google
  • Bienvenue dans Arduino Stack Exchange. Veuillez faire la visite guidée à arduino.stackexchange.com/Tour pour tirer le meilleur parti de ce site. Boolean signifie binaire, comme true / false. Effectuez une recherche Google sur " types de données Arduino " pour en savoir plus.
  • Je ne suis pas daccord pour dire que cest pas une question spécifique à Arduino. boolean est un alias de type non standard pour bool défini dans la bibliothèque principale Arduino et est donc très spécifique à Arduino. Voir ma réponse pour plus de détails.
  • Renommer quelque chose ne signifie pas ' que cela ' est alors spécifique à Arduino.

Réponse

Alors que les autres réponses donnent des informations généralement utiles, les auteurs semblent ne pas avoir lu la question très attentivement car ils parlent du type bool plutôt que du booléen type. Dans lAPI Arduino, boolean est un alias de type pour bool, tel que défini dans Arduino.h:

https://github.com/arduino/Arduino/blob/1.8.3/hardware/arduino/avr/cores/arduino/Arduino.h#L125

typedef bool boolean; 

Vous pouvez donc utiliser le type boolean comme vous le feriez bool et toute référence de programmation C ++ standard vous expliquera lutilisation de bool. Pour cette raison, les autres réponses qui se réfèrent à tort à bool sont encore quelque peu utiles.

Apparemment, à un moment donné dans le passé, les gens dArduino ont décidé du nom boolean serait plus convivial pour les débutants que bool, peut-être pour être cohérent avec le langage de traitement . Cependant, comme indiqué ici:

https://github.com/arduino/Arduino/issues/4673

linutile lutilisation dun type non standard est maintenant considérée par certains comme une mauvaise décision car son utilisation rend le code moins portable et ne fournit vraiment aucun avantage clair par rapport à bool. Une proposition est dans les travaux pour supprimer lutilisation de boolean de tout le code officiel Arduino et document bool dans la référence Arduino et certains souhaitent même formellement désapprouver boolean. Mon conseil est donc dutiliser bool au lieu de boolean dans votre code.

Réponse

Un type de variable booléenne est celui qui na que 2 valeurs possibles, true ou false. En interne, il est créé en tant que int (entier 16 bits) ou uint8_t type (entier 8 bits).

Vous pouvez attribuer le « val ues « de true ou false à laide de lopérateur daffectation:

bool foo; foo = true; if (foo) { do_something(); } 

En interne, un true est un 1 et un false est un 0, et les valeurs numériques pourraient être également substituées.

Les types booléens dans Arduino et C ++ existent principalement pour la lisibilité, et non pour une efficacité particulière sur le type int.

Réponse

La référence officielle peut être trouvée ici

Il est préférable de utilisez toujours vrai et faux, et nutilisez pas de nombres.

Ci-dessous quelques exemples sont donnés

Attribuez false resp true à un booléen:

bool a = true; bool b = false; 

Vérifiez la valeur booléenne:

if (b) { // Executed when b is true } else { // Executed when b is false } if (a && b) { // Executed when a is true and b is true } if (a || b) { // Executed when a is true or b is true } 

Si b est faux, a sera faux, sinon a restera tel quel

a &= b; 

Si b est vrai, a sera vrai, sinon a restera tel quel

a |= b; 

// Si a est vrai, ce sera faux et vice versa.

a = !a; 

Commentaires

  • Ce dernier devrait être a =! a shouldn ' t-il? ~ est un peu pas.Selon la façon dont true est défini, ~ true peut toujours être vrai.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *