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
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.
boolean
er et ikke-standard type alias forbool
satt i Arduino-kjerne-biblioteket og er derfor veldig Arduino-spesifikk. Se svaret mitt for detaljer.