4.5 Typy wyliczeniowe
Dalej: 4.6 Wskaźniki
W górę: 4. Podstawowe typy danych
Wstecz: 4.4 Typ logiczny
4.5 Typy wyliczeniowe
Charakterystycznym dla C/C++ typem (a właściwie typami) danych są
wyliczenia
(zwane czasem enumeracjami, z angielskiego enumeration).
Typy te dopiero ostatnio pojawiły się w
Javie.
Formalnie
wyliczenie jest typem zdefiniowanym przez
zbiór (zwykle niewielki) nazwanych stałych całkowitych.
Na przykład
enum dni {pon, wto, sro, czw, pia, sob, nie};
definiuje typ wyliczeniowy o nazwie
dni. Zmienne tego typu
będą mogły przybierać dokładnie siedem wartości, wyliczonych
w nawiasach klamrowych w definicji tego typu (stąd nazwa
wyliczenia, typ wyliczeniowy).
Definicja typu wyliczeniowego składa się
ze słowa kluczowego
enum,
nazwy wprowadzanego typu
oraz ujętej w nawiasy klamrowe listy nazw symbolicznych wartości
elementów wyliczenia. Symbolom można przypisywać wartości liczbowe
(patrz niżej), a nazwę typu można opuścić.
Jeśli opuszczamy nzwę typu, to najczęściej
tworzymy od razu zmienne tego anonimowego typu:
enum {pik, kier, karo, trefl} karta1, karta2;
...
karta1 = kier;
karta2 = karta1;
...
if (karta2 == trefl) { ... }
W tym przykładzie mamy dwie zmienne anonimowego typu
wyliczeniowego opisującego
kolory kart; żadnej innej zmiennej tego typu nie da się już
utworzyć, bo nie ma on nazwy.
Innym zastosowaniem wyliczeń anonimowych jest
wprowadzenie do programu nazwanych stałych, które mogą na przykład
służyć do wymiarowania tablic wtedy, gdy definiowanie
stałych za pomocą słowa kluczowego
const byłoby
niewygodne (np. wewnątrz definicji klas;
patrz
rozdział o listach inicjalizacyjnych ).
Wewnętrznie zmienne typu
dni będą reprezentowane
za pomocą kolejnych liczb całkowitych poczynając od zera:
tak więc symbol
pon odpowiadać będzie liczbie
0, a np. symbol
sob - liczbie 5.
Elementom wyliczenia można nadać odpowiadające im wartości
liczbowe „ręcznie'', np.
enum dni {pon, wto=0, sro=0, czw=0, pia=0, sob, nie};
przy czym obowiązują następujące zasady:
pierwszy element będzie odpowiadał wartości 0 jeśli
nie nadano mu innej wartości poprzez jawne przypisanie w
definicji wylicznia. Tak więc w powyższym przykładzie
symbol
pon odpowiada wartości liczbowej 0.
każdemy innemu elementowi zostanie przypisana wartość
o jeden większa od wartości elementu poprzedniego,
chyba że poprzez jawne przypisanie w definicji określono
inną wartość. Tak więc w naszym przykładzie
symbolom od
wto do
pia zostanie również
przypisana wartość 0. Symbolowi
sob nie została
jawnie przypisana żadna wartość, a zatem niejawnie otrzyma
on wartość 1 (jako następujący po
pia, którego
wartość jest 0). Podobnie,
nie odpowiadać
będzie liczbie 2.
Przypisane elementom wyliczenia wartości nie tylko nie muszą
być różne dla różnych elementów wyliczenia, ale nie muszą też
być wartościami kolejnymi ani rosnącymi; mogą
występować „dziury''.
Na przykład powyższa definicja mogłaby wyglądać tak
enum dni {pon, wto=0, sro=0, czw=0, pia=0, sob, nie=3};
Po takiej definicji
sob odpowiada w dalszym ciągu
wartości 1, ale niedzieli (zmiennej
nie) odpowiada teraz 3;
wartości 2 nie odpowiada zaś teraz żaden element wyliczenia.
Przyjrzyjmy się następującemu programowi:
Wyszukiwarka
Podobne podstrony:
node21node219 USW27VBI7H2S4LU5TC4RIFJSUJ5JUA4QE6ICXZInode215node215 GWB3TXPM7VQ3AXSLK3VS2UBR6ZGXCGPYLMZ55JAnode217 RD4ILLOVEESXQRWXFXINFWQ7G72FZTQH7EM7RWQnode218 VDR7T2VHSEGSQLOYI2DLXI3PYVFEEISD5L2P4XAnode212 SGBDO2JHPIQUORENRHOB4G2HVCWNNI2AXCLPXCYnode21node21 7LIPDGOLGYJWR527WS5RSNHINUL3USFSJYGQVSYnode21 2X2ZGOCIN5S7DA44M3MUZXNIGWO5D7UZTN4UGKQnode21 RU5OKSJV7JUKIVYMGXZS2KZXBQKWHHCMUYQ4VTQnode21node210 KIIEEY3IFS6STAYIEJRY4HHT6QT7ZW3T3J6CPYQnode216node213 2EWURWDUOW2EO7FP7S7MDGNHXJL3UT7IBKWLNNYnode21node214 S4A7LRKNUJ6HP3OQG7X42E6OFKBPCLT5TTGX4WInode211 VZV5WOVQZFOIQHXYOM35NAFDMWJNOEO4DLQVP3Ywięcej podobnych podstron