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

KOŞUL İŞLECİ<br />

Koşul işleci (conditional operator / ternary operator), C dilinin üç terimli tek işlecidir.<br />

Herhangi bir ifade koşul işlecinin terimlerinden biri olabilir. Koşul işlecinin genel sözdizimi<br />

aşağıdaki gibidir:<br />

ifade1 ? ifade2 : ifade3<br />

Koşul işleci, yukarıdaki biçimden de görüldüğü gibi, birbirinden ayrılmış iki atomdan<br />

oluşur. ? ve : atomları, işlecin üç terimini birbirinden ayırır.<br />

Derleyici, bir koşul işleci ile karşılaştığını, ? atomundan anlar. ? atomunun solundaki<br />

ifadenin (ifade1) sayısal değeri hesaplanır. Bu ifade mantıksal olarak yorumlanır. Eğer<br />

ifade1'in 0'dan farklı ise, bu durumda yalnızca ifade2' nin sayısal değeri hesaplanır.<br />

ifade1'in değeri 0 ise, bu kez yalnızca ifade3'ün sayısal değeri hesaplanır.<br />

Diğer işleçlerde olduğu gibi koşul işleci de bir değer üretir. Koşul işlecinin ürettiği değer<br />

ifade1 doğru ise (0 dışı bir değer ise) ifade2'nin değeri, ifade1 yanlış ise ifade3'ün<br />

değeridir. Örnek:<br />

m = x > 3 ? y + 5 : y – 5;<br />

Burada önce x > 3 ifadesinin sayısal değeri hesaplanır. Bu ifadenin değeri 0'dan farklı ise<br />

yani doğru ise, koşul işleci y + 5 değerini üretir. x > 3 ifadesinin değeri 0 ise yani ifade<br />

yanlış ise, koşul işleci y – 5 değerini üretir. Bu durumda m değişkenine x > 3 ifadesinin<br />

doğru ya da yanlış olmasına göre y + 5 ya da y – 5 değeri atanır.<br />

Aynı işlem if deyimi ile de yapılabilir :<br />

if (x > 3)<br />

m = y + 5;<br />

else<br />

m = y – 5;<br />

Koşul işleci, işleç öncelik tablosunun 13. öncelik seviyesindedir. Bu seviye atama işlecinin<br />

hemen üstüdür. Aşağıdaki ifadeyi ele alalım:<br />

x > 3 ? y + 5 : y – 5 = m<br />

Koşul işlecinin önceliği atama işlecinden daha yüksek olduğu için, önce koşul işleci ele<br />

alınır. x > 3 ifadesinin doğru olduğunu ve işlecin y + 5 değerini ürettiğini düşünelim.<br />

y + 5 = m<br />

Koşul işlecinin ürettiği değer sol taraf değeri olmadığından, yukarıdaki ifade geçersizdir.<br />

Normal olarak koşul işlecinin ilk terimini ayraç içine almak gerekmez. Ancak bu terimin,<br />

okunabilirlik açısından genellikle ayraç içine alınması tercih edilir.<br />

(x >= y + 3) ? a * a : b<br />

Koşul işlecinin üçüncü terimi konusunda dikkatli olmak gerekir. Örneğin:<br />

m = a > b ? 20 : 50 + 5<br />

a > b ifadesinin doğru olup olmamasına göre koşul işleci, 20 ya da 55 değerini üretir ve<br />

son olarak da m değişkenine koşul işlecinin ürettiği değer atanır. Ancak m değişkenine<br />

a > b ? 20 : 50<br />

159/529

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

Saved successfully!

Ooh no, something went wrong!