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.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();
- 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.
- Sequence point : yaptığınız işlemin etkisini gösterdiği noktaya denir.
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.
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.- 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.
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))