Increment Operator etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Increment Operator etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

C++ Unary Operatörler, Değer Artırma-Azaltma

    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!

Türksat Saat Kanalı ve IRIG-B Time Code

Türksat Saat Kanalından Saat Bilgisi Nasıl Alınır? Uyduda kanalları dolaşırken, şu Türksat Saat kanalı hep dikkatimi çekmiştir. Özellikle  S...