Existuje speciální nestandardní datový typ Arduino s názvem " boolean ".
Jaké je srovnání se standardním datovým typem C ++ " bool " a jaké jsou důvody pro použití jednoho nebo druhého?
Pokud jsou shodné v použití, proč existují oba a který je v kódu Arduino preferován?
Komentáře
Odpověď
Zatímco ostatní odpovědi poskytují obecně užitečné informace, zdá se, že autoři otázku nečetli příliš pečlivě protože mluví spíše o bool typu než o boolean typ. V rozhraní Arduino API je boolean alias typu pro bool, jak je definováno v Arduino.h:
https://github.com/arduino/Arduino/blob/1.8.3/hardware/arduino/avr/cores/arduino/Arduino.h#L125
typedef bool boolean;
Můžete tedy použít typ boolean stejně jako bool a jakýkoli standardní programovací odkaz v C ++ vás naučí používat bool. Z tohoto důvodu jsou další odpovědi, které se mylně odkazují na bool, stále ještě poněkud užitečné.
Zdá se, že v určitém okamžiku v minulosti lidé z Arduina rozhodli jméno boolean by bylo pro začátečníky vstřícnější než bool, snad by bylo konzistentní s jazykem zpracování . Jak je zde však diskutováno:
https://github.com/arduino/Arduino/issues/4673
zbytečné použití nestandardního typu je nyní některými považováno za špatné rozhodnutí, protože jeho použití činí kód méně přenosným a ve skutečnosti neposkytuje žádnou jasnou výhodu oproti bool. v pracích k odstranění použití boolean ze všech oficiálních Arduino kódů a dokumentu bool v odkazu Arduino a někteří si dokonce přejí formální podporu boolean. Mou radou je tedy použít bool místo boolean ve vašem kódu.
Odpověď
Typ logické proměnné je takový, který má pouze 2 možné hodnoty, true nebo false. Interně se vytváří jako int (16bitové celé číslo) nebo uint8_t typ (8bitové celé číslo).
Můžete přiřadit „val ues „of true nebo false pomocí operátoru přiřazení:
bool foo; foo = true; if (foo) { do_something(); }
Interně je true 1 a false je 0 a číselné hodnoty mohou být nahrazeny stejně.
Booleovské typy v Arduinu a C ++ existují většinou kvůli čitelnosti a nikoli kvůli konkrétní účinnosti nad int typem.
Odpověď
Oficiální odkaz naleznete zde
Nejlepší je vždy používejte true a false a nepoužívejte čísla.
Níže uvádíme několik příkladů.
Přiřaďte false nebo true logickému objektu:
bool a = true; bool b = false;
Zkontrolujte booleovskou hodnotu:
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 }
Pokud b je nepravdivé, bude vůle nepravdivá, jinak a zůstane tak, jak byla
a &= b;
Je-li b pravdivé, bude a pravdivé, jinak a zůstane tak, jak bylo
a |= b;
// Pokud je a pravdivé, bude nepravdivé a naopak.
a = !a;
Komentáře
- Ten poslední by měl být a =! a neměl by ' to? ~ je bitově ne.V závislosti na tom, jak je definována pravda, může být pravda stále pravdivá.
booleanje nestandardní alias typu proboolnastavený v základní knihovně Arduino, a proto je velmi specifický pro Arduino. Podrobnosti najdete v mé odpovědi.