Usar el tipo de datos “ boolean ” especial de Arduino en lugar del “ bool ” tipo de datos

Hay un tipo de datos Arduino especial, no estándar llamado " boolean ".

¿Cómo se compara con el tipo de datos estándar de C ++ " bool ", ¿y cuáles son las razones para usar uno u otro?

Si son idénticos en uso, ¿por qué existen ambos y cuál es el preferido en el código Arduino?

Comentarios

  • Esta es una pregunta básica de programación, no específica de Arduino. La lista y guía de libros definitiva de C ++ . O Google
  • Bienvenido a Arduino Stack Exchange. Realice el recorrido en arduino.stackexchange.com/Tour para aprovechar al máximo este sitio. Booleano significa binario, como verdadero / falso. Realice una búsqueda en Google de " tipos de datos de Arduino " para averiguarlo.
  • No estoy de acuerdo con que esto sea no es una pregunta específica de Arduino. boolean es un alias de tipo no estándar para bool establecido en la biblioteca principal de Arduino y, por lo tanto, es muy específico de Arduino. Vea mi respuesta para obtener más detalles.
  • Cambiar el nombre de algo no ' no significa que ' s luego específico de Arduino.

Responder

Mientras que las otras respuestas dan información generalmente útil, los autores parecen no haber leído la pregunta con mucho cuidado porque están hablando del tipo bool en lugar del booleano tipo. En la API de Arduino, boolean es un alias de tipo para bool, como se define en Arduino.h:

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

typedef bool boolean; 

Para que pueda usar el tipo boolean tal como lo haría bool y cualquier referencia de programación C ++ estándar le indicará el uso de bool. Por esta razón, las otras respuestas que se refieren erróneamente a bool siguen siendo algo útiles.

Aparentemente, en algún momento del pasado, la gente de Arduino decidió el nombre boolean sería más amigable para los principiantes que bool, quizás para ser consistente con el lenguaje de procesamiento . Sin embargo, como se explica aquí:

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

lo innecesario El uso de un tipo no estándar ahora es considerado por algunos como una mala decisión, ya que su uso hace que el código sea menos portátil y realmente no proporciona ninguna ventaja clara sobre bool. Una propuesta es en proceso de eliminar el uso de boolean de todo el código oficial de Arduino y el documento bool en la referencia de Arduino y algunos incluso desean desaprobar formalmente boolean. Por lo tanto, mi consejo es usar bool en lugar de boolean en su código.

Respuesta

Un tipo de variable booleana es aquel que tiene solo 2 valores posibles, true o false. Internamente, se crea como un int (entero de 16 bits) o un uint8_t tipo (entero de 8 bits).

Puede asignar el «val ues «de true o false usando el operador de asignación:

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

Internamente, una true es una 1 y una false es una 0, y los valores numéricos podrían sustituirse por igual.

Los tipos booleanos en Arduino y C ++ existen principalmente para facilitar la lectura, y no para una eficiencia particular sobre el tipo int.

Respuesta

La referencia oficial se puede encontrar aquí

Es mejor use siempre verdadero y falso, y no use números.

A continuación se dan algunos ejemplos

Asigne falso resp verdadero a un booleano:

bool a = true; bool b = false; 

Verifique el valor 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 } 

Si b es falso, a será falso; de lo contrario, a permanecerá como estaba

a &= b; 

Si b es verdadero, a será verdadero, de lo contrario a permanecerá como estaba

a |= b; 

// Si a es verdadero, será falso y viceversa.

a = !a; 

Comentarios

  • Ese último debería ser a =! a ¿No debería ' t? ~ no es bit a bit.Dependiendo de cómo se defina verdadero, ~ verdadero puede seguir siendo cierto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *