Med hjälp av speciell Arduino “ boolean ” Datatyp istället för standard “ bool ” datatyp

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

  • Detta är en grundläggande programmeringsfråga, inte specifik för Arduino. Den definitiva C ++ bokhandboken och listan . Eller Google
  • Välkommen till Arduino Stack Exchange. Ta turen på arduino.stackexchange.com/Tour för att få ut det mesta av denna webbplats. Boolean betyder binär, som sant / falskt. Gör en Google-sökning på " Arduino-datatyper " för att få reda på det.
  • Jag håller inte med om att detta är inte en Arduino-specifik fråga. boolean är ett icke-standardtypalias för bool i Arduino-kärnbiblioteket och är därför mycket Arduino-specifikt. Se mitt svar för mer information.
  • Att byta namn på något betyder inte ' t det ' är då specifikt för Arduino.

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *