Usando Arduino “ booleano ” Tipo de dados especial em vez do “ bool ” tipo de dados

Há um tipo de dados Arduino especial não padrão chamado " booleano ".

Como ele se compara ao tipo de dados C ++ padrão " bool ", e quais são as razões para usar um ou outro?

Se eles são idênticos no uso, por que existem ambos e qual é o preferido no código do Arduino?

Comentários

  • Esta é uma questão básica de programação, não específica do Arduino. A lista e o guia definitivo do livro C ++ . Ou Google
  • Bem-vindo ao Arduino Stack Exchange. Faça o tour em arduino.stackexchange.com/Tour para obter o máximo deste site. Booleano significa binário, como verdadeiro / falso. Faça uma pesquisa no Google em " tipos de dados do Arduino " para descobrir sobre isso.
  • Não concordo que seja não é uma questão específica do Arduino. boolean é um alias de tipo não padrão para bool definido na biblioteca principal do Arduino e, portanto, é muito específico do Arduino. Veja minha resposta para detalhes.
  • Renomear algo não ' significa que ' é específico para Arduino.

Resposta

Embora as outras respostas forneçam informações geralmente úteis, os autores parecem não ter lido a pergunta com muito cuidado porque eles estão falando sobre o tipo bool em vez do tipo booleano tipo. Na API do Arduino, boolean é um alias de tipo para bool, conforme definido em Arduino.h:

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

typedef bool boolean; 

Então você pode usar o tipo boolean exatamente como você faria bool e qualquer referência de programação C ++ padrão o instruirá no uso de bool. Por esse motivo, as outras respostas que erroneamente se referem a bool ainda são um pouco úteis.

Aparentemente, em algum momento no passado, o pessoal do Arduino decidiu o nome boolean seria mais amigável para iniciantes do que bool, talvez para ser consistente com a linguagem de processamento . No entanto, conforme discutido aqui:

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

o desnecessário o uso de um tipo não padrão é agora considerado por alguns como uma má decisão, pois seu uso torna o código menos portátil e realmente não oferece nenhuma vantagem clara sobre bool. Uma proposta é em andamento para remover o uso de boolean de todo o código oficial do Arduino e documento bool na referência do Arduino e alguns até desejam suspender formalmente boolean. Portanto, meu conselho é usar bool em vez de boolean em seu código.

Resposta

Um tipo de variável booleana é aquele que tem apenas 2 valores possíveis, true ou false. Internamente, é criado como um int (inteiro de 16 bits) ou um uint8_t type (inteiro de 8 bits).

Você pode atribuir o “val ues “de true ou false usando o operador de atribuição:

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

Internamente, um true é um 1 e um false é um 0, e os valores numéricos podem ser igualmente substituídos.

Os tipos booleanos em Arduino e C ++ existem principalmente para facilitar a leitura, e não para qualquer eficiência particular sobre o tipo int.

Resposta

A referência oficial pode ser encontrada aqui

É melhor sempre use verdadeiro e falso, e não use números.

Abaixo alguns exemplos são dados

Atribua falso resp verdadeiro a um booleano:

bool a = true; bool b = false; 

Verifique o 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 } 

Se b for falso, a será falso, caso contrário a permanecerá como estava

a &= b; 

Se b for verdadeiro, a será verdadeiro; caso contrário, a permanecerá como estava

a |= b; 

// Se a for verdadeiro, será falso e vice-versa.

a = !a; 

Comentários

  • Este último deve ser a =! a não deve ' ser? ~ não é um pouco inteligente.Dependendo de como true é definido, true ainda pode ser true.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *