C++ Unary Operatörler

    C++ Unary operatörler, tek operandları olmaları sebebiyle bu ismi almışlardır diye düşünüyorum, zira unary : tekli olarak dilimize dönüyor. Bu arkadaşlar yüksek önceliğe sahiptirler. Basit bir konu olmakla beraber dikkat edilmesi gereken hususları yok değil. Postfix ve prefix olarak kullanımları mevcut, ikisinin arasındaki farksa prefix olduklarında önce operasyon gerçekleşiyor sonra aksiyon gerçekleşiyor, postfix olduklarında önce aksiyon sonra operasyon gerçekleşiyor, ne demeye çalışıyorum bir örnekle bakalım; örneğimizde increment operatorumuz olan ++ operatorunu ya da decrement operatorumuz olan -- ' yi kullanabiliriz: 

int i = 0;
cout << i++ << endl;
cout console içine verdiğimiz herneyse yazdırır söylemiş olalım, burada operasyondan kasıt i değerinin mevcut değerine 1 eklenmesi, aksiyondan kasıt da bu değerin konsol ekranına yazdırılmasıdır. Postfixden kasıt ++ operatörünün değişkenden sonra yazılması, prefix 'den kasıt ++i şeklinde değişkenden önce yazılmasıdır. Yukarıdaki örnekte, postfix kullanılmış olup çıktı olarak 0 yazdırılması beklenir, yazdırıldıktan sonra i değeri 1 artırılır. Aynı durum decrement operatör için de geçerlidir. 

Örnekleri çoğaltabiliriz :
int i = 11;
int r = --i / 2; 
bizim için önce i değerini 10 a düşürüp, sonra 2 ye böler ve 5 sonucunu üretir.
Pointer konusuna hakim olmayan arkadaşlar buraya fransız kalabilirler, ben biliyorum diyenlere sorum aşağıdaki kod parçacığı ne çıktı üretir yorumlara bekliyoruz kendisini :

int nums[4] = { 1,2,3,4 };
int* ptr1 = &nums[0];
int* ptr2 = ptr1++;
cout << *ptr2 << endl;
Yukardaki kodu es geçenler için biraz basitleşelim :

int nums[4] = { 1,2,3,4 };
int next = ++nums[1];
cout << next << endl;
dizimiz var 4 elemanlı; elemanları 1,2,3,4 dizilerde detaylı yazıyor oluruz bunu, dizinin ilk elemanına ulaşmak için yapmamız gereken nums[0] yazmak; ikinci satırdaki next değişkeni istiyor ki bana nums dizisinin elemanlarından indeksi 1 olandan sonrakini ver, yani çıktımız 3 oluyor. Üzerinde biraz çalışırsanız herşey netleşecektir :)

Son olarak da NOT ! operatörümüz güzide bir unary operatör olup bool veri tipindeki değişkenlerin değerini mevcut değerinin tersine çevirmektedir, yani true ise false, false ise true yapar:

bool state = true;
state = !state;
 
if (state)
{
 
}
if (!state)
{
 
}
state ilk satırda true iken ikinci satırda false olmuştur. If le kullanımına örnek olsun diye if durumlarını da ekledim ilk if (state == true) ile ikinci if (state == false) ifadesiyle aynı anlama gelmekte, ayrıca state doğru değilse gibi de kontrol yapılabilir : if(state != true) burada da eşittiri eşit değildir yapmış olur NOT operatörü.

Kafanızdaki takılanları yorumlarda sormaktan lütfen çekinmeyin!

Herkese kolay gelsin!

Yorumlar

Bu blogdaki popüler yayınlar

Arduino IDE Kod Satır Numaraları Nasıl Açılır

DMD2TUR | Arduino P10 Led Panel için Türkçe Karakter Desteği | Arduino P10 Led panel Türkçe yazı yazma

P10 Led Panel Nasıl Sürülür - Arduino kod