Folosind Arduino “ boolean special ” tip de date în loc de standard “ bool ” tip de date

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

  • Aceasta este o întrebare de bază de programare, care nu este specifică Arduino. Ghidul și lista definitivă a cărții C ++ . Sau Google
  • Bine ați venit la Arduino Stack Exchange. Faceți turul la arduino.stackexchange.com/Tour pentru a profita la maximum de acest site. Boolean înseamnă binar, ca adevărat / fals. Efectuați o căutare pe Google pe " Tipuri de date Arduino " pentru a afla despre asta.
  • Nu sunt de acord că acesta este nu o întrebare specifică Arduino. boolean este un alias de tip non-standard pentru bool setat în biblioteca de bază Arduino și, prin urmare, este foarte specific Arduino. Vedeți răspunsul meu pentru detalii.
  • Redenumirea unui lucru nu înseamnă ' nu înseamnă că ' este apoi specific Arduino.

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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *