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

Ancak C++ standartlarında durum böyle değildir. Dilin kuralına uymayan kodlarda<br />

derleyici bir ileti vermeli, derleme işlemini başarısızlık ile sonuçlanmalıdır.<br />

Derleyiciler, standartlarda belirtilen özelliklerin dışında da bazı özelliklere sahip olabilir.<br />

Bu tür özelliklere derleyicilerin eklentileri denir. Derleyicilerin eklentilerini kullanmak<br />

taşınabilirliği azaltır.<br />

++ ve -- İşleçleriyle İlgili Tanımsız Davranışlar<br />

++ ve -- işleçlerinin bazı kullanımları, tanımsız davranış özelliği gösterir. Böyle kodlardan<br />

sakınmak gerekir.<br />

1. Bir ifadede bir nesne ++ ya da -- işleçlerinin terimi olmuşsa, o nesne o ifadede bir kez<br />

daha yer almamalıdır. Örneğin aşağıdaki ifadelerin hepsi tanımsız davranış özelliği<br />

gösterirler:<br />

int x = 20, y;<br />

int a = 5;<br />

y = ++x + ++x; /* tanımsız davranış */<br />

y = ++x + x /* tanımsız davranış */<br />

a = ++a; /* tanımsız davranış */<br />

"Koşul işleci", "mantıksal ve işleci", "mantıksal veya işleci" ve "virgül" işleciyle oluşturulan<br />

ifadelerde bir sorun yoktur. Bu işleçlerle ilgili önemli bir kurala ileride değineceğiz.<br />

2. Bir işlev çağrılırken işleve gönderilen argümanların birinde bir nesne ++ ya da --<br />

işlecinin terimi olmuşsa, bu nesne, işleve gönderilen diğer argüman olan ifadelerde<br />

kullanılmamalıdır.<br />

Argüman olan ifadelerin, işlevlerin ilgili parametre değişkenlerine kopyalanmasına ilişkin<br />

sıra, standart bir biçimde belirlenmemiştir. Bu kopyalama işlemi, bazı sistemlerde soldan<br />

sağa bazı sistemlerde ise sağdan soladır. Aşağıdaki örneği inceleyin:<br />

int a = 10;<br />

void func(int x, int y)<br />

{<br />

/***/<br />

}<br />

int main()<br />

{<br />

func (a, a++); /* Tanımsız davranış */<br />

}<br />

/***/<br />

Karşılaştırma İşleçleri (ilişkisel işleçler)<br />

C programlama dilinde toplam 6 tane karşılaştırma işleci vardır:<br />

< küçüktür işleci (less than)<br />

> büyüktür işleci (greater than)<br />

= büyüktür ya da eşittir işleci (greater than or equal)<br />

== eşittir işleci (equal)<br />

!= eşit değildir işleci (not equal)<br />

Bu işleçlerin hepsi, iki terimli, araek konumundaki (binary infix) işleçlerdir.<br />

82/529

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

Saved successfully!

Ooh no, something went wrong!