Struktury
Typy wyliczeniowe
Pisząc
enum DzienTygodnia{nie,pon,wto,sro,czw,pia,sob};
definiujemy własny typ, tak zwany typ wyliczeniowy. Oczywiście można teraz zadeklarować
DzienTygodnia dzienWyplaty=pia;
Kompilator kojarzy z elementami typu wyliczeniowego kolejne liczby całkowite, poczynając
od zera, chyba, że explicite przy definicji typu konkretny element skojarzono
z inną liczbą, tak jak w przykładzie
enum controlKeys{tab=8,enter=13};
- Z każdym typem wyliczeniowym skojarzony jest możliwie najmniejszy zakres sięgający od zera do potęgi dwójki zmniejszonej o jeden.
W praktyce jednak może z tym być róznie np. w gcc typy wyliczeniowe są przeważnie przechowywane jako int-y.
- Jednakże do zmiennej typu wyliczeniowego nie da się podstawić bezpośrednio liczby całkowitej. Trzeba dokonać jawnej konwersji. Tak więc zapis
dzienWyplaty=4; // brak konwersji
powoduje błąd.
- Jednak można napisać
dzienWyplaty=DzienTygodnia(7);
choć w ten sposób nie przypisujemy żadnego dnia z listy, gdyż
sobota to DzienTygodnia(6), a niedziela to DzienTygodnia(0).
Dlatego dla bezpieczeństwa lepiej posługiwać się nazwami wartości.