Kas yra programavimo kalbų entuziastas?

click fraud protection

Trumpas suskaičiavimui, enum kintamo tipo galima rasti C (ANSI, o ne originalus K&R), C ++ ir C #. Idėja yra ta, kad užuot naudoję int norint pavaizduoti verčių rinkinį, vietoj jo naudojamas ribotos vertės rinkinys.

Pavyzdžiui, jei mes naudojame vaivorykštės spalvas, kurios yra

  1. Raudona
  2. Oranžinė
  3. Geltona
  4. Žalias
  5. Mėlyna
  6. Indigo
  7. Violetinė

Jei neegzistuoja, galite naudoti a #define (C) arba const C ++ / C #, kad nurodytumėte šias reikšmes. Pvz

Per daug intų skaičiuoti!

Problema yra ta, kad jų yra daug daugiau ints nei spalvos. Jei violetinė vertė yra 7, o programa priskiria 15 reikšmę kintamajam, tada ji akivaizdžiai yra klaida, tačiau gali būti neaptikta, nes 15 yra tinkama int reikšmė.

Gelbėjimo sumos

Enum yra vartotojo apibrėžtas tipas, kurį sudaro vardinių konstantų, vadinamų enumeratoriais, rinkinys. Vaivorykštės spalvos būtų išdėstytos taip:

Viduje kompiliatorius naudos int juos, kad nelaikytų reikšmių. Jei reikšmės nepateikiamos, raudona bus 0, oranžinė yra 1 ir tt

Esmė ta vaivorykštės spalvos yra tipas ir tam gali būti priskirti tik kiti to paties tipo kintamieji. C yra lengviau (ty mažiau griežtai įvesta), bet C ++ ir C # neleis priskirti, nebent jūs jį priverstumėte naudodami balsą.

instagram viewer

Jums tai neužstrigo sudarytojas sugeneruotas reikšmes, jūs galite joms priskirti savo sveikąjį skaičių, kaip parodyta čia.

Turėti tą pačią reikšmę turinčią mėlyną ir indigo yra ne klaida, nes įrašuose gali būti sinonimai, tokie kaip raudonos ir raudonos spalvos.

Kalbos skirtumai

C, kintamasis Prieš deklaraciją turi būti žodis enum kaip in

Nors C ++ jis nėra reikalingas kaip vaivorykštės spalvos yra atskiras tipas, kuriam nereikia enum tipo priešdėlio.

C # reikšmės prieinamos pagal tipo pavadinimą kaip ir

Kokia yra Enums esmė?

Enumų naudojimas padidina abstrakcijos lygį ir leidžia programuotojui galvoti apie tai, ką reiškia vertės, o ne nerimauti, kaip jos saugomos ir pasiekiamos. Tai sumažina klaidų atsiradimą.

Štai pavyzdys. Turime šviesoforų rinkinį su trimis lemputėmis- raudona, geltona ir žalias. JK šiose keturiose fazėse keičiasi šviesoforų seka.

  1. Raudona - Sustabdytas eismas.
  2. Tiek Raudona ir Geltona - Eismas vis tiek sustojo, tačiau lemputės pasikeis į žalią.
  3. Žalias - Eismas gali judėti.
  4. Geltona - Įspėjimas apie neišvengiamą raudonos spalvos pasikeitimą.

Šviesoforo pavyzdys

Žibintai valdomi užrašant apatinius tris valdymo baito bitus. Jie išdėstomi kaip dvejetainiai brėžiniai, pateikiami žemiau, kai RYG žymi tris bitus. Jei R yra 1, dega raudona lemputė ir tt

Tokiu atveju nesunku pastebėti, kad keturios aukščiau nurodytos būsenos atitinka reikšmes 4 = Raudona įjungta, 6 = Raudona + Geltona abu įjungti, 1 = Žalias įjungta ir 2 = Geltona apie.

Su šia funkcija

Klasės naudojimas vietoj Enums

C ++ ir C # turėtume sukurti klasę ir tada perkrova operatorius | leisti O ziedas tipų šviesoforas.

Naudodamiesi enumais užkertame kelią problemoms, susijusioms su kitais bitais, skirtais lemputės valdymo baitui. Gali būti, kad kai kurie kiti bitai kontroliuoja savęs tikrinimą arba „žaliosios juostos“ jungiklį. Tokiu atveju klaidą, leidžiančią nustatyti šiuos bitus normaliai naudojant, gali sugadinti.

Norėdami būti tikri, mes užmaskuosime bitai „SetTrafficlights“ ()funkcija Taigi, nesvarbu, kokia vertė perduodama, keičiami tik trys apatiniai bitai.

Išvada

Enums turi šiuos privalumus:

  • Jie riboja reikšmes, kurias gali priimti enum kintamasis.
  • Jie verčia jus galvoti apie visas įmanomas vertybes, kurių gali imtis enum.
  • Jie yra pastovus, o ne skaičius, didinantys skaitomumą pirminis kodas
instagram story viewer