Typ prosty wyliczeniowy

Stronę tą wyświetlono już: 276 razy

Wszędzie tam, gdzie istnieje konieczność oznaczenia pewnych danych w sposób niejawny, np. nazw dni tygodnia, za którymi będą stały pewne liczby przypisane do danej nazwy dnia stosuje się typy wyliczeniowe, które wymuszają podanie odpowiedniej wartości do zmiennej typu wyliczeniowego. Przykład deklaracji takiego typu wyliczeniowego można obejrzeć poniżej.

Listing 1
  1. // Deklaracja typu wyliczeniowego
  2. enum DaysOfWeek{
  3. Monday, // poniedziałek
  4. Tuesday, // wtorek
  5. Wednesday, // środa
  6. Thursday, // czwartek
  7. Friday, // piątek
  8. Saturday, // sobota
  9. Sunday // niedziela
  10. };
  11. // Tworzenie zmiennej typu wyliczeniowego i przypisanie jej wartości odpowiadającej poniedziałkowi
  12. enum DaysOfWeek d = Monday;

Wszystkie zmienne wyliczeniowe enum są typu int a więc zajmują 32-bajty pamięci i są to liczby całkowite ze znakiem. Istnieje też możliwość ustawienia własnych wartości dla kolejnych elementów danego typu wyliczeniowego (domyślnie numeracja jest od 0 z krokiem co 1. Przykład własnych wartości przypisanych do danego elementu:

Listing 2
  1. enum DaysOfWeek{
  2. Monday = 2, // od tego momentu kolejne elementy będą numerowane co 1 w zwyrz
  3. Tuesday,
  4. Wednesday,
  5. Thursday,
  6. Friday,
  7. Saturday,
  8. Sunday
  9. };
  10. enum DaysOfWeek d = Monday;

Przykład kodu pokazującego działanie typu wyliczeniowego:

Listing 3
  1. #include <iostream>
  2. enum DaysOfWeek{
  3. Monday = 2, // od tego momentu kolejne elementy będą numerowane co 1 w zwyrz
  4. Tuesday,
  5. Wednesday,
  6. Thursday,
  7. Friday,
  8. Saturday,
  9. Sunday
  10. };
  11. int main(){
  12. std::cout<<"Poniedzialek: "<<(int)Monday<<std::endl;
  13. std::cout<<"Wtorek: "<<(int)Tuesday<<std::endl;
  14. std::cout<<"Sroda: "<<(int)Wednesday<<std::endl;
  15. std::cout<<"Czwartek: "<<(int)Thursday<<std::endl;
  16. std::cout<<"Piatek: "<<(int)Friday<<std::endl;
  17. std::cout<<"Sobota: "<<(int)Saturday<<std::endl;
  18. std::cout<<"Niedziela: "<<(int)Sunday<<std::endl<<std::endl;
  19. std::cout<<"Wcisnij enter, aby zamknac program...";
  20. std::cin.get();
  21. return 0;
  22. }

Komentarze