08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

Öncelik İşleci<br />

Öncelik işleci ( ), bir ifadenin önceliğini yükseltmek amacıyla kullanılır.<br />

x = (y + z) * t;<br />

Öncelik işleci, C'nin en yüksek öncelikli işleçler grubundadır. Öncelik işleci de, kendi<br />

arasında soldan sağa öncelik kuralına uyar. Örneğin:<br />

a = (x + 2) / ((y + 3) * (z + 2) – 1);<br />

ifadesinde işlem sırası şöyledir :<br />

i1 : x + 2<br />

i2 : y + 3<br />

i3 : z + 2<br />

i4 : i2 * i3<br />

i5 : i4 – 1<br />

i6 : i1 / i5<br />

i7 : a = i6<br />

Öncelik işlecinin terimi nesne gösteren bir ifade ise, işlecin ürettiği ifade de nesne<br />

gösterir:<br />

int x;<br />

(x) = 20; /* Geçerli */<br />

İşleç Önceliği ve Bir İşlemin İşlemci Tarafından Önce Yapılması<br />

İşleç önceliği, bir işlemin işlemci tarafından daha önce yapılması anlamına gelmez.<br />

Aşağıdaki ifadeyi düşünelim:<br />

x = func1() * func2() + func3();<br />

Çarpma işlecinin toplama işlecinden daha yüksek öncelikli olduğunu biliyorsunuz. Ancak<br />

bu öncelik, örneğin yukarıdaki deyimde func1 işlevinin func3 işlevinden daha önce<br />

çağrılacağı güvencesi anlamına gelmez. Öncelik işlecinin de kullanımı böyle bir güvence<br />

sağlamaz.<br />

x = func1() * (func2() + func3());<br />

Bu kez de örneğin func2 işlevinin func1 işlevinden daha önce çağrılmasının güvencesi<br />

yoktur.Bu kez de aşağıdaki main işlevini inceleyin:<br />

#include <br />

int main()<br />

{<br />

int x = 10;<br />

int y = x + (x = 30);<br />

printf("y = %d\n", y);<br />

}<br />

return 0;<br />

main işlevi içinde yazılan<br />

y = x + (x = 30);<br />

90/529

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

Saved successfully!

Ooh no, something went wrong!