Eşitlik ve Atama operatörleri
EŞİTLİK VE ATAMA OPERATÖRLER
İGenelde ne kadar tecrübeli olursa olsun, C programcılarının yaptıkları bir hata vardır.Bu sebepten bu hataya ayrı bir kısım ayırmayı uygun gördük. Bu hata, == ( eşitlik ) ve = ( atama ) operatörlerinin karıştırılmasından kaynaklanır. Bu hata, bir yazım hatasından daha ciddidir çünkü bu hataların yer aldığı ifadeler doğru bir biçimde derlenirler ancak çalışma zamanında programın hatalı sonuçlar üretmesine sebep olurlar.
| Operatörler İşeyiş Biçimleri Tipleri | ||
| ( ) | soldan sağa parantez | |
| ++ -- + - ! | sağdan sola | tekli |
| * / % | soldan sağa | multiplicative |
| + - | soldan sağa | additive |
| < >= > >= | soldan sağa | karşılaştırma |
| = = != | soldan sağa | eşitlik |
| && | soldan sağa | mantıksal ve |
| || | soldan sağa | mantıksal veya |
| ?: | sağdan sola | koşullu |
| = += -= *= /= %= | sağdan sola | atama |
| , | soldan sağa |
virgül |
Şekil 4.16 Operatörlerin öncelikleri ve işleyiş biçimleri
C'nin bu tür hataları üretmesinin iki sebebi vardır. Bunlardan birincisi, C'de değer üretebilen herhangi bir deyimin, kontrol yapılarının karar kısımlarında kullanılabilmesidir. Eğer değer 0 ise yanlış olarak değerlendirilir. Eğer değer sıfırdan farklı ise doğru olarak kabul edilir. İkinci sebep ise C'de atamaların bir değer üretmesidir. Bu değer, atama operatörünün solundaki değerdir. Örneğin,
1 |
if ( puan == 4) |
yazmak isterken yanlışlıkla
1 |
if ( puan = 4) |
yazdığımızı düşünelim.
İlk if ifadesi, eğer kişinin puanı 4 ise o kişiye bonus vermektedir. İkinci if ifadesi ise yanlış bir biçimde yazıldığından, öncelikle atama operatörünün değerini hesaplar. Bu değer sıfırdan farklı bir değer olduğundan, doğru olarak kabul edilir. Bu da, if yapısının sürekli doğru olarak çalışması ve kişinin puanı kaç olursa olsun kişiye bonus verilmesi hatasına sebep olur.
Genel Programlama Hataları 4.8
== operatörünü atama ya da = operatörünü eşitlik için kullanmak.
Programcılar x ==7 gibi koşulları sabit değer sağda, değişken ismi solda olacak şekilde, 7 == x biçiminde yazarlar. Böylece, == operatörünü yanlışlıkla = operatörüyle karıştırmaktan kurtulurlar. Derleyiciler, bu yazım hatasını tespit edebilirler çünkü bir atama işleminde değişken ismi yalnızca değişkenin solunda bulunabilir. En azından böylelikle, çalışma zamanlı bir hata yapma ihtimali ortadan kalkmış olur.
Değişken isimleri, sol taraf değeri olarak adlandırılırlar çünkü değişken isimleri atama işlemlerinde operatörün solunda bulunurlar. Sabit değerler ise sağ taraf değeri olarak adlandırılırlar çünkü yalnızca atama operatörünün sağında bulunabilirler. Sol taraf değerleri, sağ taraf değeri olabilir ancak bunun tersi geçerli değildir.
İyi Programlama Alıştırmaları 4.18
Eşitlik deyimi, x == 1 gibi bir değişken ismi ve bir sabit içerdiğinde,bazı programcılar deyimi sabit değer solda, değişken ismi sağda bulunacak şekilde yazarak, yanlışlıkla == operatörüyle = operatörünü karıştırmaktan kaynaklanabilecek mantık hatalarını engellerler.
Madalyonun öteki yüzü de aynı biçimde can sıkıcıdır. Programcının bir değişkene sabit bir değer atamak istediğini düşünelim:
x = 1;
yazacağına yanlışlıkla
x ==1;
yazması bir yazım hatası oluşturmaz. Derleyici, karşılaştırma deyimini hesaplar. Eğer x, 1'e eşitse koşul doğrudur ve deyim, 1 değerini döndürecektir. Eğer x, 1'e eşit değilse koşul yanlış olacaktır ve deyim, 0 değerini döndürecektir. Hangi değer döndürülürse döndürülsün, atama operatörü bulunmadığından değer kaybolacak ve x değişmeden kalacaktır. Bu da muhtemelen çalışma zamanlı bir mantık hatası üretecektir. Maalesef , bu problemi ortadan kaldıracak bir yola sahip değiliz.
Bilinmesi Gerekli
Arduino

Arduino ile bilgisayar programlarınızı gerçek dünyaya taşıyabilirsiniz.
İlk Transistör

Bell laboratuvarlarında icat edilen ilk transistör







