Použití speciálního datového typu Arduino “ boolean ” namísto standardního “ bool ” datový typ

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

  • Toto je základní programátorská otázka, která není specifická pro Arduino. The Definitive C ++ Book Guide and List . Nebo Google
  • vítejte na serveru Arduino Stack Exchange. Využijte prohlídku na arduino.stackexchange.com/Tour , abyste tento web využili na maximum. Boolean znamená binární, jako true / false. Vyhledejte na Googlu " datové typy Arduino ", abyste se o tom dozvěděli.
  • Nesouhlasím s tím, že se jedná o není otázka specifická pro Arduino. boolean je nestandardní alias typu pro bool nastavený v základní knihovně Arduino, a proto je velmi specifický pro Arduino. Podrobnosti najdete v mé odpovědi.
  • Přejmenování něčeho neznamená ' to ' tedy specifické pro Arduino.

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á.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *