
Typ wyliczeniowy jest zmienną typu int, która może przyjmować tylko konkretne wartości. Tutaj podobnie jak w strukturze trzeba najpierw taki typ zdefiniować.
Stworzyliśmy typ int, który może przyjmować tylko 3 wartości, są nimi 1, 2 lub 3, innych nie może. Mamy już definicję tego typu, stwórzmy teraz zmienną:
Teraz dopiero utworzyliśmy sobie zmienną w pamięci, która jest typu definicja_typu, więc widzisz chyba, że to tak jakbyśmy tworzyli nowy typ zmiennej, która może przyjmować tylko wyznaczone wartości.
Taki zapis jest błędny, gdyż zmienna może przyjmować tylko określone wartości, a 4 do nich nie należy. Trzeba pamiętać, że gdy tworzymy zmienną enum należy ją od razu zainicjować, bo bez inicjacji może ona przyjąć dowolną wartość, z poza zakresu, a kompilator nie sprawdza wtedy, czy bez inicjacji zmienna mieści się w zakresie.
Jeżeli na początku nie przypiszemy wartości nazwie war1, to domyślnie numerowanie nazw zaczyna się od 0 i rośnie o 1 w górę, co każdą kolejną nazwę wartości, dla przykładu war1 będzie wynosić 0, war2 będzie wynosić 1, itd.
war1=0
war2=1
war3=2
war4=3
Możemy zmienić numerowanie:
W tej sytuacji, numerację rozpoczniemy od 10, a kolejne będą domyślnie o 1 większe.
war1=10
war2=11
war3=12
war4=13
W tej sytuacji pierwsza będzie wynosić 10, druga jest nie zdefiniowana, więc domyślnie o 1 większa, czyli 11, trzecia będzie wynosiła 20, a czwarta o 1 większa, czyli 21.
war1=10
war2=11
war3=20
war4=21
Myślę, że widzisz zasadę numerowania.
Dla przykładu praktycznego zastosowania, możemy sobie zrobić typ, który będzie przyjmował, określone dni tygodnia.
Robimy typ, który może przyjmować dni tygodnia, czyli numery od 1 do7. Tworzymy sobie zmienną tego typu i przypisujemy jej wartość niedzieli(7).