Det finns en speciell, icke-standardiserad Arduino-datatyp som heter " boolean ".
Hur jämför det sig med standard C ++ datatyp " bool ", och vad är skälen till att använda den ena eller den andra?
Om de är identiska i varför, varför finns båda och vilken föredras i Arduino-kod?
Kommentarer
Svar
Medan de andra svaren ger generellt användbar information verkar författarna inte ha läst frågan särskilt noggrant eftersom de talar om bool typ snarare än boolean typ. I Arduino API är boolean ett typalias för bool, enligt definitionen 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 använda boolean typ precis som du skulle bool och alla standard C ++ programmeringsreferenser kommer att instruera dig att använda bool. Av denna anledning är de andra svaren som felaktigt hänvisar till bool fortfarande något användbara.
Tydligen någon gång i det förflutna bestämde Arduino-folket namnet boolean skulle vara mer nybörjarvänligt än bool, kanske för att vara överensstämmer med bearbetningsspråket . Men som diskuteras här:
https://github.com/arduino/Arduino/issues/4673
det onödiga användning av en icke-standardtyp anses nu av vissa vara ett dåligt beslut eftersom dess användning gör koden mindre bärbar och verkligen inte ger någon klar fördel jämfört med bool. i arbetet för att ta bort användningen av boolean från all officiell Arduino-kod och dokument bool i Arduino-referensen och vissa vill till och med formellt upphäva boolean. Därför är mitt råd att använda bool istället för boolean i din kod.
Svar
En boolesk variabel typ är en som bara har två möjliga värden, true eller false. Internt skapas det som ett int (16-bitars heltal) eller ett uint8_t typ (8-bitars heltal).
Du kan tilldela ”val ues ”av true eller false med tilldelningsoperatören:
bool foo; foo = true; if (foo) { do_something(); }
Internt är en true en 1 och en false är en 0, och antalet värden kan ersättas lika.
Booleska typer i Arduino och C ++ finns mestadels för läsbarhet och inte för någon speciell effektivitet över int -typ.
Svar
Den officiella referensen finns här
Det är bäst att använd alltid sant och falskt och använd inte siffror.
Nedan ges några exempel
Tilldela falskt resp sant till en boolean:
bool a = true; bool b = false;
Kontrollera det booleska värdet:
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 }
Om b är falskt, kommer a att vara falskt, annars förblir a som det var
a &= b;
Om b är sant kommer a att vara sant, annars kommer en att förbli som det var
a |= b;
// Om a är sant kommer det att vara falskt och tvärtom.
a = !a;
Kommentarer
- Det sista borde vara a =! a borde ' t det? ~ är lite klokt inte.Beroende på hur sant definieras ~ kan sant fortfarande vara sant.
booleanär ett icke-standardtypalias förbooli Arduino-kärnbiblioteket och är därför mycket Arduino-specifikt. Se mitt svar för mer information.