Erityisen Arduino “ -loogisen ” -tyypin käyttäminen tavallisen “ bool ” tietotyyppi

On olemassa erityinen, ei-standardi Arduino-tietotyyppi nimeltä " looginen ".

Miten se vertaa tavalliseen C ++ -tyyppiin " bool ", ja mitkä ovat syyt käyttää yhtä tai toista?

Jos niitä on samanlainen käyttö, miksi molempia on olemassa ja kumpi niistä on suositeltava Arduino-koodissa?

Kommentit

  • Tämä on ohjelmointikysymys, ei vain Arduinolle. Lopullinen C ++ -kirjaopas ja -luettelo . Tai Google
  • Tervetuloa Arduino Stack Exchangeen. Ota kiertue osoitteesta arduino.stackexchange.com/Tour saadaksesi kaiken irti tästä sivustosta. Boolen tarkoittaa binääristä, kuten tosi / väärä. Suorita Google-haku " Arduino-tietotyypeillä " saadaksesi tietää siitä.
  • Olen eri mieltä, että tämä on ei Arduino-kysymys. boolean on epätyypillinen alias bool -asetukselle, joka on asetettu Arduino-ydinkirjastossa, ja siksi se on hyvin Arduino-spesifinen. Katso lisätietoja vastauksestani.
  • Jonkin nimen uudelleennimeäminen ei tarkoita sitä, että se ' olisi sitten Arduinolle ominaista.

vastaus

Vaikka muut vastaukset antavat yleisesti hyödyllistä tietoa, kirjoittajat eivät näytä lukevan kysymystä kovin huolellisesti koska he puhuvat bool -tyypistä kuin -loogisesta -tyyppi. Arduino-sovellusliittymässä boolean on tyypin alias kohteelle bool, kuten Arduino.h: ssa määritellään:

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

typedef bool boolean; 

Joten voit käyttää boolean -tyyppi samalla tavalla kuin tekisit bool, ja mikä tahansa tavallinen C ++ -ohjelmointiviite neuvoo sinua käyttämään bool. Tästä syystä muut vastaukset, jotka virheellisesti viittaavat bool -ohjelmaan, ovat silti jonkin verran hyödyllisiä.

Ilmeisesti jossain vaiheessa Arduinon kansalaiset päättivät nimen boolean olisi aloittelijaystävällisempi kuin bool, ehkä yhdenmukainen käsittelykielen kanssa . Kuitenkin, kuten täällä keskustellaan:

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

tarpeeton jotkut pitävät epätyypillisen tyypin käyttöä huonona päätöksenä, koska sen käyttö tekee koodista vähemmän siirrettävän eikä todellakaan tarjoa mitään selkeää etua bool: een nähden. Ehdotus on teoksissa boolean -käytön poistaminen kaikesta virallisesta Arduino-koodista ja asiakirjasta bool Arduino-viitteessä ja jotkut haluavat jopa muodollisesti hylätä boolean. Siksi minun on suositeltava käyttää koodissasi bool boolean: n sijasta.

Vastaus

Boolen muuttujatyyppi on tyyppi, jolla on vain 2 mahdollista arvoa, true tai false. Sisäisesti se luodaan int (16-bittinen kokonaisluku) tai uint8_t -tyyppi (8-bittinen kokonaisluku).

Voit määrittää ”val ues ”/ true tai false määritysoperaattorilla:

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

Sisäisesti true on 1 ja false on 0, ja lukuarvot voidaan korvata yhtä hyvin.

Boolen tyyppejä Arduinossa ja C ++: ssa on enimmäkseen luettavuuden vuoksi, eikä minkään erityisen tehokkuuden suhteen int -tyyppiin nähden. Vastaa

Virallinen viite löytyy täältä

On parasta käytä aina tosi ja epätosi, älä käytä numeroita.

Seuraavassa on joitain esimerkkejä.

Määritä epätosi tosi Boolen arvolle:

bool a = true; bool b = false; 

Tarkista looginen arvo:

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 } 

Jos b on epätosi, a on väärä, muuten a pysyy ennallaan

a &= b; 

Jos b on tosi, a on totta, muuten a pysyy ennallaan

a |= b; 

// Jos a on tosi, se on väärä ja päinvastoin.

a = !a; 

Kommentit

  • Sen viimeisen pitäisi olla a =! a shouldn ' t se? ~ ei ole bittiä.~ Tosi voi määritelmän mukaan olla totta.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *