Problem z enum

0

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

1

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;
}
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...

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1