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 />

İlk dört işleç, işleç öncelik tablosunun 6. seviyesinde bulunurken diğer iki karşılaştırma<br />

işleci öncelik tablosunun 7. seviyesinde bulunur. Yani karşılaştırma işleçleri, kendi<br />

aralarında iki öncelik grubu oluşturur. Karşılaştırma işleçleri, aritmetik işleçlerden daha<br />

düşük öncelikli seviyededir.<br />

Diğer programlama dillerinin çoğunda bool ya da boolean (Matematikçi George Bool'un<br />

isminden) ismi verilen bir mantıksal veri türü de doğal bir veri türü olarak programcının<br />

kullanımına sunulmuştur. Böyle dillerde bool veri türü, yalnızca mantıksal doğru ya da<br />

mantıksal yanlış değerlerini alabilen bir türdür. Bu dillerde karşılaştırma işleçlerinin<br />

ürettiği değerler ise bu türdendir. Örneğin C++ ya da Java dillerinde durum böyledir.<br />

C dilinde karşılaştırma işleçleri, oluşturdukları önermenin doğruluğu ve yanlışlığına göre<br />

int türden 1 ya da 0 değerini üretir. Önerme doğru ise 1 değeri üretilirken, önerme<br />

yanlış ise 0 değeri üretilir. Bu işleçlerin ürettiği değerler de tıpkı aritmetik işleçlerin<br />

ürettiği değerler gibi kullanılabilir.<br />

Aşağıdaki signum isimli işlevin tanımını inceleyin:<br />

int signum(int val)<br />

{<br />

return (val > 0) - (val < 0);<br />

}<br />

signum işlevine gönderilen argüman 0'dan büyük bir değerse işlev +1 değerine,<br />

argüman 0'dan küçük bir değerse işlev -1 değerine, argüman 0 değeriyse işlev, 0<br />

değerine geri dönüyor. signum işlevinin geri dönüş değeri, karşılaştırma işleçlerinin değer<br />

üretmesinden faydalanılarak elde ediliyor.<br />

Bazı programlama dillerinde<br />

(val > 0) - (val < 0);<br />

gibi bir işlem hata ile sonuçlanır. Çünkü örneğin Pascal dilinde<br />

val > 0<br />

ifadesinden elde edilen değer doğru (True) ya da yanlış (False) dir. Yani üretilen değer<br />

bool ya da boolean türündendir. Ama C doğal bir dil olduğu için karşılaştırma işleçlerinin<br />

ürettikleri değer bool türü ile kısıtlanmamıştır. C'de mantıksal veri türü yerine int türü<br />

kullanılır. Mantıksal bir veri türünün tamsayı türüyle aynı olması C'ye esneklik ve doğallık<br />

kazandırmıştır. C dilinde yazılan birçok kalıp kod, karşılaştırma işleçlerinin int türden 1 ya<br />

da 0 değeri üretmesine dayanır. Örneğin<br />

x = y == z;<br />

Yukarıdaki deyim, C dili için son derece doğaldır ve okunabilirliği yüksektir. Bu deyimin<br />

yürütülmesiyle x değişkenine ya 1 ya da 0 değeri atanır. Karşılaştırma işleci, atama<br />

işlecinden daha yüksek öncelik seviyesine sahip olduğuna göre önce karşılaştırma işleci<br />

olan '==' değer üretir, işlecin ürettiği değer bu kez atama işlecinin terimi olur. Bu<br />

durumda y değişkeninin değerinin z değişkenine eşit olup olmamasına göre x değişkenine<br />

1 ya da 0 değeri atanır.<br />

Karşılaştırma işlecinin kullanılmasında bazı durumlara dikkat edilmelidir:<br />

int x = 12;<br />

5 < x < 9<br />

83/529

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

Saved successfully!

Ooh no, something went wrong!