Mi az a programnyelv-program?

Rövid a felsorolásra, egy enum változó típus megtalálható a C (ANSI, nem az eredeti K&R), C ++ és C #. Az ötlet az, hogy a int az értékhalmaz ábrázolására egy korlátozott értékhalmaztípust használunk.

Például, ha a szivárvány színeit használjuk, amelyek a következők

  1. Piros
  2. narancssárga
  3. Sárga
  4. Zöld
  5. Kék
  6. Indigó
  7. Ibolya

Ha nem léteztek enumok, akkor használhatja a #define (C-ben) vagy const a C ++ / C # alatt ezeket az értékeket adja meg. Például

Túl sok pénz számít!

Ennek problémája az, hogy még sok más létezik ints mint a színek. Ha az ibolya értéke 7, és a program egy változóhoz 15 értéket rendel, akkor egyértelműen hiba, de előfordulhat, hogy nem észlelhető, mivel a 15 egy érvényes érték egy int számára.

Enumák a mentőnek

Az enum egy felhasználó által definiált típus, amely egy megnevezett konstans halmazból áll, amelyeket felsorolóknak hívnak. A szivárvány színei így kerülnek feltérképezésre:

Most a belső fordító ezeket int tárolja, és ha nem adnak meg értékeket, a piros 0, narancssárga 1 stb.

A lényeg az

instagram viewer
rainbowcolors egy típus, és csak azonos típusú más változók rendelhetők hozzá. A C könnyebben megy végbe (azaz kevésbé szigorúan írja be), de a C ++ és a C # nem engedi a hozzárendelést, hacsak nem ösztönözted öntés segítségével.

Nem ragadtál be ezekbe fordítóprogram generált értékeket, az itt látható módon hozzáigazíthatja számukhoz saját egész számát.

A kék és az indigó azonos értékének megadása nem hiba, mivel a felsorolók szinonimákat tartalmazhatnak, mint például a skarlát és a vörös.

Nyelvi különbségek

C-ben a változó A nyilatkozatot a szónak kell megelőznie enum mint a

A C ++ esetében azonban erre nincs szükség rainbowcolors egy különálló típus, amelynek nincs szüksége az enum típusú előtagra.

A C # -ben az értékeket a típusnévvel lehet elérni, mint a

Mi a pont az enumokra?

Az enumok használata növeli az absztrakció szintjét, és lehetővé teszi a programozónak, hogy elgondolkodjon azon, hogy mit jelentenek az értékek, ahelyett, hogy aggódnának a tárolásuk és elérésük miatt. Ez csökkenti a hibák előfordulását.

Íme egy példa. Van egy sor közlekedési lámpánál három izzóval - piros, sárga és zöld. Az Egyesült Királyságban a közlekedési lámpák sorrendje megváltozik e négy szakaszban.

  1. Piros - A forgalom leállt.
  2. Mindkét Piros és Sárga - A forgalom továbbra is megállt, de a fények zöldre váltanak.
  3. Zöld - A forgalom mozoghat.
  4. Sárga - Figyelmeztetés a hamarosan pirosra váltásról.

Jelzőlámpa

A lámpákat úgy vezérlik, hogy a vezérlő bájt alsó három bitjére írják. Ezeket egy kicsit mintázatként adjuk meg alább, binárisan, ahol a RYG képviseli a három bitet. Ha R 1, a piros lámpa világít stb.

Ebben az esetben könnyen belátható, hogy a fenti négy állapot megfelel a 4 = értékeknek Piros be, 6 = Piros + Sárga mindkettő be van kapcsolva, 1 = Zöld be és 2 = Sárga tovább.

Ezzel a funkcióval

Osztály használata az Enums helyett

A C ++ és a C # esetén létre kell hoznunk egy osztályt, majd azt túlterhelés az üzemeltető | megengedni OR-ing típusú közlekedési lámpák.

Az enumok használatával megakadályozzuk az egyéb bitekkel kapcsolatos problémákat az izzó vezérlő bájtjában. Lehet, hogy a többi bit vezérli az öntesztet vagy a "Green Lane" kapcsolót. Ebben az esetben egy hiba, amely lehetővé teszi ezen bitek normál használatban történő beállítását, pusztíthat.

Az biztos, hogy elfedtük a biteket a SetTrafficlights ()funkció tehát nem számít, milyen értéket adunk át, csak az alsó három bit megváltozik.

Következtetés

Az enumoknak vannak ezek az előnyei:

  • Korlátozza azokat az értékeket, amelyeket az enum változó felvehet.
  • Arra kényszerítik Önt, hogy gondolkozzon az összes lehetséges értékre, amelyet az enum fel tud venni.
  • Állandó, nem pedig szám, és növelik a forráskód
instagram story viewer