08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

Numaralandırma değişmezleri, mantıksal ilişki içinde bulunan belirli sayıda tanımlamalar<br />

için tercih edilir. Mantıksal ilişki içindeki bazı isimlerin bir tür kapsamı altında ele alınması<br />

okunabilirliği artırır. Örneğin:<br />

enum Gun {Pazartesi, Sali, Carsamba, Persembe, Cuma, Cumartesi, Pazar};<br />

Derleyicilerin sistemlere yönelik sağladığı başlık dosyalarında, birçok numaralandırma<br />

türü ve bu türlere ilişkin numaralandırma değişmezleri tanımlanır. Örneğin aşağıdaki<br />

numaralandırma bildirimi 80x86 sistemlerinde çalışan bir Borland derleyicisinin graphics.h<br />

isimli başlık dosyasından alınmıştır:<br />

enum COLORS {<br />

BLACK,<br />

BLUE,<br />

GREEN,<br />

CYAN,<br />

RED,<br />

MAGENTA,<br />

BROWN,<br />

LIGHTGRAY,<br />

DARKGRAY,<br />

LIGHTBLUE,<br />

LIGHTGREEN,<br />

LIGHTCYAN,<br />

LIGHTRED,<br />

LIGHTMAGENTA,<br />

YELLOW,<br />

WHITE<br />

};<br />

Numaralandırma Türlerine İlişkin Tür Dönüşümleri<br />

C dilinde bir numaralandırma türü derleyici tarafından fiziksel olarak int türü biçiminde<br />

ele alınır. Numaralandırma türleri ile diğer doğal türler arasında otomatik tür dönüşümü<br />

söz konusudur. Örneğin bir numaralandırma değişkenine int tüden bir değer atanabilir.<br />

Ya da int türden bir değişkene bir numaralandırma değişmezi atanabilir:<br />

typedef enum {OFF, HOLD, STANDBY, ON}Position;<br />

void func()<br />

{<br />

Position pos = 2; /* Geçerli */<br />

int x = ON; /* Geçerli */<br />

/***/<br />

}<br />

Ancak numaralandırma değişkenlerine diğer doğal türlerden atama yapıldığında tür<br />

dönüştürme işlecinin kullanılması programın okunabilirliğini artırır:<br />

pos = (Position)2;<br />

Numaralandırma Değişmezlerinin Ekrana Yazdırılması<br />

Bir numaralandırma değeri ekrana standart printf işleviyle %d format karakteriyle<br />

eşlenerek yazdırılabilir. Numaralandırma değişmezinin tamsayı değerini değil de ismini<br />

ekrana yazdırmanın doğrudan bir yolu yoktur. Bu amaçla bir işlev yazılabilir:<br />

425

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!