Bruker spesiell Arduino “ boolsk ” Datatype i stedet for standard “ bool ” datatype

Det er en spesiell, ikke-standard Arduino-datatype som heter " boolsk ".

Hvordan sammenlignes det med standard C ++ datatype " bool ", og hva er årsakene til å bruke den ene eller den andre?

Hvis de er identiske i bruk, hvorfor eksisterer begge deler, og hvilken av dem foretrekkes i Arduino-koden?

Kommentarer

  • Dette er et grunnleggende programmeringsspørsmål, ikke spesifikt for Arduino. The Definitive C ++ Book Guide and List . Eller Google
  • Velkommen til Arduino Stack Exchange. Ta turen på arduino.stackexchange.com/Tour for å få mest mulig ut av dette nettstedet. Boolsk betyr binær, som sant / usant. Gjør et Google-søk på " Arduino-datatyper " for å finne ut om det.
  • Jeg er uenig i at dette er ikke et Arduino-spesifikt spørsmål. boolean er et ikke-standard type alias for bool satt i Arduino-kjerne-biblioteket og er derfor veldig Arduino-spesifikk. Se svaret mitt for detaljer.
  • Å endre navn på noe betyr ikke ' t det ' som er spesifikt for Arduino.

Svar

Mens de andre svarene gir generelt nyttig informasjon, synes forfatterne ikke å ha lest spørsmålet veldig nøye fordi de snakker om bool typen i stedet for boolsk type. I Arduino API er boolean et typealias for bool, som definert i Arduino.h:

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

typedef bool boolean; 

Så du kan bruke boolean typen akkurat som du ville bool og enhver standard C ++ programmeringsreferanse vil instruere deg i bruken av bool. Av denne grunn er de andre svarene som feilaktig refererer til bool fremdeles noe nyttige.

Tilsynelatende på et tidspunkt tidligere bestemte Arduino-folkene seg navnet boolean ville være mer nybegynnervennlig enn bool, kanskje for å være i samsvar med behandlingsspråket . Som diskutert her:

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

det unødvendige bruk av en ikke-standard type anses nå av noen å være en dårlig beslutning, da bruken gjør koden mindre bærbar og virkelig ikke gir noen klar fordel i forhold til bool. i arbeid for å fjerne bruken av boolean fra all offisiell Arduino-kode og dokument bool i Arduino-referansen, og noen ønsker til og med å formelt avskaffe boolean. Derfor er mitt råd å bruke bool i stedet for boolean i koden din.

Svar

En boolsk variabel type er en som bare har to mulige verdier, true eller false. Internt opprettes det som et int (16-biters heltall) eller et uint8_t type (8-biters heltall).

Du kan tilordne «val ues «av true eller false ved å bruke tildelingsoperatøren:

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

Internt er en true en 1 og en false er en 0, og antall verdier kan være like substituert.

Boolske typer i Arduino og C ++ eksisterer for det meste for lesbarhet, og ikke for noen spesiell effektivitet over int -type.

Svar

Den offisielle referansen finner du her

Det er best å bruk alltid sant og usant, og ikke bruk tall.

Nedenfor er noen eksempler gitt

Tilordne falsk resp. sant til en boolsk:

bool a = true; bool b = false; 

Kontroller den boolske verdien:

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 } 

Hvis b er falsk, vil a være falsk, ellers vil a forbli som det var

a &= b; 

Hvis b er sant, vil a være sant, ellers vil a forbli som det var

a |= b; 

// Hvis a er sant, vil det være usant og omvendt.

a = !a; 

Kommentarer

  • Den siste skal være a =! a shouldn ' t it? ~ er litt klokt ikke.Avhengig av hvordan sant er definert ~ sant kan fremdeles være sant.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *