Brug af speciel Arduino “ boolsk ” Datatype i stedet for standard “ bool ” datatype

Der er en speciel, ikke-standard Arduino-datatype, der hedder " boolsk ".

Hvordan sammenlignes det med standard C ++ datatypen " bool ", og hvad er grundene til at bruge den ene eller den anden?

Hvis de er identiske i brug, hvorfor findes begge dele, og hvilken foretrækkes i Arduino-kode?

Kommentarer

  • Dette er et grundlæggende programmeringsspørgsmål, ikke specifikt for Arduino. Den endelige C ++ bogguide og liste . Eller Google
  • Velkommen til Arduino Stack Exchange. Tag turen på arduino.stackexchange.com/Tour for at få mest muligt ud af dette websted. Boolsk betyder binær, som sand / falsk. Gør en Google-søgning på " Arduino-datatyper " for at finde ud af det.
  • Jeg er uenig i, at dette er ikke et Arduino-specifikt spørgsmål. boolean er et ikke-standardtypealias for bool, der er angivet i Arduino-kernebiblioteket og er derfor meget Arduino-specifikt. Se mit svar for detaljer.
  • Omdøbning af noget betyder ikke ' det betyder, at det ' er specifikt for Arduino.

Svar

Mens de andre svar giver generelt nyttige oplysninger, synes forfatterne ikke at have læst spørgsmålet meget omhyggeligt fordi de taler om bool typen snarere end boolesk type. I Arduino API er boolean et typealias for bool, som defineret 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 bruge boolean typen ligesom du ville bool og enhver standard C ++ programmeringsreference vil instruere dig i brugen af bool. Af denne grund er de andre svar, der fejlagtigt henviser til bool, stadig noget nyttigt.

Tilsyneladende på et tidspunkt tidligere besluttede Arduino-folkene navnet boolean ville være mere nybegyndervenlig end bool, måske for at være i overensstemmelse med behandlingssproget . Som diskuteret her:

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

det unødvendige brug af en ikke-standard type betragtes nu af nogle som en dårlig beslutning, da dens anvendelse gør koden mindre bærbar og virkelig ikke giver nogen klar fordel i forhold til bool. i værkerne for at fjerne brugen af boolean fra al officiel Arduino-kode og dokument bool i Arduino-referencen, og nogle ønsker endda at formelt forældes boolean. Derfor er mit råd at bruge bool i stedet for boolean i din kode.

Svar

En boolsk variabeltype er en, der kun har 2 mulige værdier, true eller false. Internt oprettes det som et int (16-bit heltal) eller et uint8_t type (8-bit heltal).

Du kan tildele “val ues “af true eller false ved hjælp af tildelingsoperatøren:

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

Internt er en true en 1 og en false er en 0, og antallet af værdier kunne erstattes ligeligt.

Boolske typer i Arduino og C ++ findes for det meste for læsbarhed og ikke for nogen særlig effektivitet over int type.

Svar

Den officielle reference kan findes her

Det er bedst at Brug altid sand og falsk, og brug ikke tal.

Nedenfor gives nogle eksempler

Tildel falsk resp. sand til en boolsk:

bool a = true; bool b = false; 

Kontroller den boolske værdi:

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 forbliver a som det var

a &= b; 

Hvis b er sand, vil a være sandt, ellers forbliver a som det var

a |= b; 

// Hvis a er sandt, vil det være falsk og omvendt.

a = !a; 

Kommentarer

  • Den sidste skal være a =! a shouldn ' t it? ~ er lidt klogt ikke.Afhængigt af hvordan sand defineres, kan sand være stadig sand.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *