C'de Operatörler

11:15

ATAMA OPERATÖRLERİ

C' de bir den fazla atama operatörü vardır. Diğer dillerde atama operatörünün değer üretmesi gibi bir durum yoktur. C’de bu operatörde değer üretir.
image
C dilinde atama operatörü bir değer üretir.
  • Atama operatörünün ürettiği değer nesneye atanan değerdir.
  • Atama operatörünün öncelik yönü sağdan sola doğrudur.
x=y=z=t=func();
image

  • Well Formed : Çalışma Anında ne olacağı belli olan bunun garantisi verilen programlardır. Bazı kodlar çalışma anında ne olacağı kesin değildir. Kod legal ama çalışma anında ne olacağı, nasıl cevap vereceği belli değildir. Run time ‘da her şey olabilir. (ill formed)
  • Undefined Behaviour : Syntax hatası olmamasına karşın run time’de nasıl çalışacağına ilişkin bir garanti olmamasıdır.
image

image

  • Sequence point : yaptığınız işlemin etkisini gösterdiği noktaya denir.

image

image

Noktalı virgülden sonra ve yukarıda ki 4 operatörden sonra ve ( ) ‘den sonra yan etki noktası vardır.
Bir yan etki noktasından önce yan etkiye maruz kalan bir değişkeni tekrardan kullanmayın.
  • Tanımsız davranış demek hatalı kod demektir.
C’de bazı durumlarda nasıl davranacağı belirtilmemiştir. Bu durumlara ise Undefined Behavior denir. Yani ne sonuc vereceği belirsizdir.

image

Mesela 15%-2 işleminin sonucu +1 de olabilir -1 ‘de Derleyiciden derleyiciye değişen davranışlardır. Standartlar bu durumun uclarını açık bırakmışlardır. Bu sebeple genel olarak derleyiciler öğretmen olarak kullanmak yanlış bir yargıya ulaşmamıza sebep olabilir.

VİRGÜL OPERATÖRÜ

Diğer programlama dillerinde virgül operatörü yoktur. C’de virgül hem operatör hem de syntax’ın bir parçasıdır.
image

  • for (i=3,k=5;k<x;k++) :ifade virgül operatörü sayesinde yapılmıştır. Virgül operatörünün de geri dönüş değeri vardır. Virgül operatörünün sağındaki operand
x=10, y=20;                 
z=(y,x); z 10’a eşit olur.

  • C’de yapılan en büyük hatalardan biri "." konulması gereken yere "," konulmasıdır.


image

LOGIC OPERATÖRLER


  • !          :logical DEĞİL
  • ||          :logical OR 
  • &&     :logical AND
  • |           :bitwise OR
  • &        :bitwise AND

Bazı aynı anlamlı ifadeler:


  • x<y      :    y>x
  • x>y      :    y<x
  • x>=y    :    !(x<y)
  • x<=y    :    !(y<x)
  • x==y    :    [!(x>y)&&!(x<y)]
  • x!=y     :    ((x<y)||(y<x))


C’de kısa devre kuralı
 :


  if(x>0 && y<-5) if’in içinde bulunan koşullardan biri yanlışsa ve operatöründe sola bakmak anlamsızdır bu nedenle C’de bu duruma kısa devre kuralı denir. Kısa devre kuralında bir Ve için bir yanlış yeterli iken veya için bir doğru yeterlidir.