Există un tip de date special, non-standard Arduino numit " boolean ".
Cum se compară cu tipul de date standard C ++ " bool " și care sunt motivele pentru a utiliza unul sau altul?
Dacă sunt identice în utilizare, de ce există ambele și care este preferat în codul Arduino?
Comentarii
Răspuns
În timp ce celelalte răspunsuri oferă informații utile în general, autorii par să nu fi citit întrebarea foarte atent deoarece vorbesc despre tipul bool mai degrabă decât despre tipul boolean tip. În API-ul Arduino, boolean este un alias de tip pentru bool, așa cum este definit în Arduino.h:
https://github.com/arduino/Arduino/blob/1.8.3/hardware/arduino/avr/cores/arduino/Arduino.h#L125
typedef bool boolean;
Deci puteți utiliza tipul boolean la fel cum ați face bool și orice referință standard de programare C ++ vă va instrui în utilizarea bool. Din acest motiv, celelalte răspunsuri care în mod eronat se referă la bool sunt încă oarecum utile.
Se pare că la un moment dat în trecut oamenii Arduino au decis numele boolean ar fi mai prietenos cu începătorii decât bool, poate să fie compatibil cu limbajul de procesare . Cu toate acestea, după cum sa discutat aici:
https://github.com/arduino/Arduino/issues/4673
inutilul utilizarea unui tip non-standard este considerată acum de către unii o decizie slabă, deoarece utilizarea acestuia face codul mai puțin portabil și într-adevăr nu oferă niciun avantaj clar față de bool. O propunere este în lucru pentru a elimina utilizarea boolean din toate codurile și documentele oficiale Arduino bool din referința Arduino și unii doresc chiar să renunțe boolean. Prin urmare, sfatul meu este să utilizați bool în loc de boolean în codul dvs.
Răspuns
Un tip de variabilă booleană este una care are doar 2 valori posibile, true sau false. Intern, este creat ca un int (întreg pe 16 biți) sau ca un uint8_t tip (întreg pe 8 biți).
Puteți atribui „val ues „din true sau false utilizând operatorul de atribuire:
bool foo; foo = true; if (foo) { do_something(); }
Intern, un true este un 1 și un false este un 0, iar valorile numerice ar putea fi înlocuite în mod egal.
Tipurile booleene în Arduino și C ++ există în cea mai mare parte pentru lizibilitate și nu pentru o eficiență specială de tipul int.
Răspuns
Referința oficială poate fi găsită aici
Cel mai bine este să folosiți întotdeauna adevărat și fals și nu folosiți numere.
Mai jos sunt date câteva exemple
Atribuiți resp fals la un Boolean:
bool a = true; bool b = false;
Verificați valoarea booleană:
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 }
Dacă b este fals, a va fi fals, altfel a va rămâne așa cum a fost
a &= b;
Dacă b este adevărat, a va fi adevărat, altfel a va rămâne așa cum a fost
a |= b;
// Dacă a este adevărat, acesta va fi fals și invers.
a = !a;
Comentarii
- Acest ultim ar trebui să fie a =! a shouldn ' nu? ~ este un pic bit, nu.În funcție de modul în care este definit adevărul, adevăratul poate fi adevărat.
booleaneste un alias de tip non-standard pentruboolsetat în biblioteca de bază Arduino și, prin urmare, este foarte specific Arduino. Vedeți răspunsul meu pentru detalii.