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

nesnenin değeridir. ++ işlecinin yan etkisinden dolayı ifadenin değerlendirilmesinden<br />

sonra p göstericisinin değeri 1 artırılır. Yani p bir sonraki nesneyi gösterir. Aşağıdaki<br />

örneği inceleyin:<br />

#include <br />

int main()<br />

{<br />

int a[5] = {1, 2, 3, 4, 5};<br />

int k;<br />

int *ptr = a;<br />

*ptr++ = 10;<br />

*ptr = 20;<br />

for (k = 0; k < 5; ++k) /* 10 20 3 4 5 */<br />

printf("%d ", a[k]);<br />

}<br />

return 0;<br />

Adres işleci ile ++ işlecinin aynı ifade içinde yer alması<br />

&x++ /* Geçersiz*/<br />

x++ ifadesinin ürettiği değer adres işlecinin terimi olur. x++ ifadesinin ürettiği değer sol<br />

taraf değeri değildir. Adres işlecinin teriminin sol taraf değeri olması gerekir. Bu durumda<br />

derleme zamanında hata oluşur.<br />

&++x /* Geçersiz */<br />

++x ifadesinin ürettiği değer adres işlecinin terimi olur. ++x ifadesinin ürettiği değer sol<br />

taraf değeri değildir ve adres işlecinin teriminin sol taraf değeri olması gerekir. İfade<br />

geçersizdir.<br />

[C++ dilinde önek ++ işlecini bir sol taraf değeri ürettiği için bu ifade C++ da geçerlidir.]<br />

++&x /* Geçersiz */<br />

Adres işlecinin ürettiği değer önek konumundaki artırma işlecinin terimi olur. ++ işlecinin<br />

teriminin nesne gösteren bir ifade olması gerekir. Oysa &x ifadesi nesne gösteren bir<br />

ifade değildir. İfade geçersizdir.<br />

Adres işleci (&) ile artırma (++) ya da eksiltme (--) işleçlerinin her türlü bileşimi derleme<br />

zamanında hata oluşmasına neden olur.<br />

Köşeli ayraç işleci ile ++ işlecinin aynı ifade içinde yer alması<br />

++p[i] durumu<br />

Köşeli ayraç işleci birinci öncelik seviyesinde, ++ işleci ise ikinci öncelik seviyesindedir.<br />

Bu durumda derleyici tarafından önce köşeli ayraç işleci ele alınır. p[i] ifadesi bir nesne<br />

gösterir. Dolayısıyla ++ işlecinin terimi olmasında bir sakınca yoktur. Söz konusu ifade<br />

p[i] = p[i] + 1;<br />

anlamına gelir. Yani p[i] nesnesinin değeri 1 artırılır.<br />

p[i]++ durumu<br />

x = p[i]++;<br />

Önce p[i] nesnesinin artmamış değeri üretilir, ifadenin geri kalanında p[i] nesnesinin<br />

artmamış değeri kullanılır. Yani yukarıdaki örnekte x değişkenine p[i] nesnesinin<br />

artırılmamış değeri atanır, daha sonra p[i] nesnesi 1 artırılır.<br />

247

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

Saved successfully!

Ooh no, something went wrong!