Siema!! Mam problem z typem wyliczania
enum
. otóż w Symfonii autor nie zbyt zrozumiale to wyjaśnia, lub ja jestem taki pusty, chodzi mi o jakieś przykłady programików z waszej strony, oczywiście niech będą proste abym je pojął.
THX z góry
Siema!! Mam problem z typem wyliczania
enum
. otóż w Symfonii autor nie zbyt zrozumiale to wyjaśnia, lub ja jestem taki pusty, chodzi mi o jakieś przykłady programików z waszej strony, oczywiście niech będą proste abym je pojął.
THX z góry
to co wiem...
enum dziala mniej wiecej podobnie do define uzytego w prosty sposob
mianowicie
np
#define ZERO 0
#define JEDEN 1
#define DWA 2
#define OSIEM 8
#define DZIEWIEC 9
mozna enumem zapisac jako
enum {
ZERO, JEDEN, DWA,
OSIEM = 8, DZIEWIEC
};
ogolnie chodzi o to ze enum nadaje identyfikatora kolejne liczby, zaczyna od 0, potem 1, 2, 3 etc, chyba ze dasz IDENTYFIKATOR = liczba, to wtedy temu identyfikatorowi przypisze ta liczbe, a nastepnemu liczba+1, potem liczba+2 etc
glownie sluzy to do zwiekszenia czytelnosci kodu
poza tym z tego co wywnioskowalem kiedys, enum bodajze jest obslugiwany przez kompilator, a #define przez preprocesor
przkladowy kod
#include<stdio.h>
enum
{
ZERO,
JEDEN,
DWA,
TRZY,
OSIEM = 8,
DZIEWIEC,
DZIESIEC = 10
};
int
main( void )
{
int i;
i = OSIEM; printf( "OSIEM == %i\\n", i );
printf( "ZERO == %i\\nTRZY == %i\\nDZIESIEC == %i\\n", ZERO, TRZY, DZIESIEC );
return 0;
}
glownie sluzy to do zwiekszenia czytelnosci kodu
poza tym z tego co wywnioskowalem kiedys, enum bodajze jest obslugiwany przez kompilator, a #define przez preprocesor
Jak może służyć do czytelności kodu nie kapuje ...??? For służy do wielkrotnego powtarzania czegoś, zmienna przechowuje dane, komentarz ułatwia prace programicie, a enum glownie sluzy to do zwiekszenia czytelnosci kodu Nie za bardzo zrozumiałe?? Proszę o jaśniejsze wyjaśnienie...
typ enum ma przede wszystkim (tak mi sie wydaje) zastosowanie przy instrukcjach warunkowych switch - case czy if. jesli masz jakas wlasciwosc obiektu, ktora moze przyjmowac jeden z kilku stanow, to czasem dobrze jest skorzystac wlasnie z typu enum.
np. masz obiekt "sygnalizacja swietlna", jak wiadomo mamy trzy kolory swiatel: czerwony, pomaranczowy i zielony. zalozmy ze chcesz sprawdzic stan tego sygnalizatora - i teraz, fajnie jest uzyc typu enum:
enum {CZERWONY=0, POMARANCZOWY=1, ZIELONY=2} kolory_swiatel;
czyz nie lepiej jest sprawdzac warunek:
if (sygnalizator->kolor==CZERWONY) {samochod->czeka();}
elseif (sygnalizator->kolor==POMARANCZOWY) {samochod->wrzuca_jedynke();}
elseif (sygnalizator->kolor==ZIELONY) {samochod->rusza();};
zamiast:
if (sygnalizator->kolor==0) {samochod->czeka();}
elseif (sygnalizator->kolor==1) {samochod->wrzuca_jedynke();}
elseif (sygnalizator->kolor==2) {samochod->rusza();};
?
mozna oczywiscie zdefiniowac wlasciwosc kolor jako typ char, ale oszczedniej bedzie skorzystac z typu int i utworzyc dla niego odpowiedni typ enum