Vad är en enum i programmeringsspråk?

Förkortning för uppräkning, en enum-variabel kan hittas i C (ANSI, inte den ursprungliga K&R), C ++ och C #. Tanken är att istället för att använda en int för att representera en uppsättning värden, används en typ med en begränsad uppsättning värden istället.

Om vi ​​till exempel använder regnbågens färger, som är

  1. Röd
  2. Orange
  3. Gul
  4. Grön
  5. Blå
  6. Indigo
  7. Violett

Om det inte fanns enums kan du använda a #definiera (i C) eller const i C ++ / C # för att ange dessa värden. T.ex

För många ints att räkna!

Problemet med detta är att det finns många fler inter än färger. Om violetten har värdet 7, och programmet tilldelar ett värde 15 till en variabel är det uppenbarligen ett fel men kanske inte upptäcks eftersom 15 är ett giltigt värde för en int.

Enums to the Rescue

Enum är en användardefinierad typ som består av en uppsättning av namngivna konstanter som kallas enumerators. Regnbågens färger skulle kartläggas så här:

Nu internt kommer kompilatorn att använda en int för att hålla dessa och om inga värden tillhandahålls blir röd 0, orange är 1 osv.

Vad är fördelen med en Enum?

Poängen är att rainbowcolors är en typ och endast andra variabler av samma typ kan tilldelas detta. C är lättare att gå (dvs mindre strikt typ), men C ++ och C # tillåter inte tilldelning om du inte tvingar det med hjälp av en roll.

Du har inte fastnat med dessa kompilatorgenererade värden, du kan tilldela ditt eget heltalskonstant till dem som visas här.

Att ha blått och indigo med samma värde är inte ett misstag eftersom uppräknare kan innehålla synonymer som skarlakansröd och röd.

Språkskillnader

I C måste variabeldeklarationen föregås av ordet enum som i

Men i C ++ behövs det inte rainbowcolors är en distinkt typ som inte behöver prefixet av enumtyp.

I C # får man tillgång till värden med typnamnet som i

Vad är poängen med enums?

Genom att använda enums ökar abstraktionsnivån och låter programmeraren fundera över vad värdena betyder snarare än att oroa sig för hur de lagras och nås. Detta minskar förekomsten av buggar.