Utilizzo del “ booleano ” tipo di dati speciale Arduino invece del “ bool ” tipo di dati

Esiste un tipo di dati Arduino speciale e non standard chiamato " boolean ".

Come si confronta con il tipo di dati C ++ standard " bool ", e quali sono i motivi per utilizzare luno o laltro?

Se sono identici nelluso, perché esistono entrambi e quale è il preferito nel codice Arduino?

Commenti

  • Questa è una domanda di programmazione di base, non specifica di Arduino. The Definitive C ++ Book Guide and List . Oppure Google
  • Benvenuto in Arduino Stack Exchange. Fai il tour su arduino.stackexchange.com/Tour per ottenere il massimo da questo sito. Booleano significa binario, come vero / falso. Esegui una ricerca su Google sui " tipi di dati Arduino " per scoprirlo.
  • Non sono daccordo che sia non una domanda specifica su Arduino. boolean è un alias di tipo non standard per bool impostato nella libreria principale di Arduino e quindi è molto specifico per Arduino. Vedi la mia risposta per i dettagli.
  • Rinominare qualcosa non ' significa che ' è quindi specifico per Arduino.

Risposta

Mentre le altre risposte forniscono informazioni generalmente utili, gli autori sembrano non aver letto la domanda con molta attenzione perché parlano del tipo bool anziché del tipo booleano tipo. NellAPI di Arduino, boolean è un alias di tipo per bool, come definito in Arduino.h:

https://github.com/arduino/Arduino/blob/1.8.3/hardware/arduino/avr/cores/arduino/Arduino.h#L125

typedef bool boolean; 

Quindi puoi utilizzare il boolean digita proprio come faresti con bool e qualsiasi riferimento alla programmazione C ++ standard ti istruirà sulluso di bool. Per questo motivo le altre risposte che erroneamente si riferiscono a bool sono ancora piuttosto utili.

Apparentemente a un certo punto in passato la gente di Arduino ha deciso il nome boolean sarebbe più adatto ai principianti di bool, forse coerente con il linguaggio di elaborazione . Tuttavia, come discusso qui:

https://github.com/arduino/Arduino/issues/4673

il non necessario luso di un tipo non standard è ora considerato da alcuni una decisione sbagliata in quanto il suo utilizzo rende il codice meno portabile e in realtà non fornisce alcun chiaro vantaggio rispetto a bool. Una proposta è in fase di elaborazione per rimuovere luso di boolean da tutto il codice ufficiale di Arduino e dal documento bool nel riferimento ad Arduino e alcuni desiderano addirittura deprecarlo boolean. Pertanto, il mio consiglio è di utilizzare bool invece di boolean nel codice.

Risposta

Un tipo di variabile booleana è quello che ha solo 2 valori possibili, true o false. Internamente, viene creato come int (numero intero a 16 bit) o uint8_t tipo (numero intero a 8 bit).

Puoi assegnare il valore “val ues “di true o false utilizzando loperatore di assegnazione:

bool foo; foo = true; if (foo) { do_something(); } 

Internamente, un true è un 1 e un false è un 0 e i valori numerici potrebbero essere ugualmente sostituiti.

I tipi booleani in Arduino e C ++ esistono principalmente per la leggibilità e non per una particolare efficienza rispetto al tipo int.

Risposta

Il riferimento ufficiale può essere trovato qui

È meglio usa sempre vero e falso e non usare numeri.

Di seguito vengono forniti alcuni esempi

Assegna false e false a un valore booleano:

bool a = true; bool b = false; 

Controlla il valore booleano:

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 } 

Se b è falso, a sarà falso, altrimenti a rimarrà comera

a &= b; 

Se b è vero, a sarà vero, altrimenti a rimarrà comera

a |= b; 

// Se a è vero, sarà falso e viceversa.

a = !a; 

Commenti

  • Questultimo dovrebbe essere a =! a shouldn ' vero? ~ non è un bit a bit.A seconda di come viene definito vero, ~ vero può ancora essere vero.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *