BİLGİ SAYAMIYORUM beta

C++ ta "-->" ve "-->>" işaretleri ne anlama gelir, ne işe yararlar?

0

C++ diline "-->" ya da "-->>" özel birer operatör değildir. Sadece belli operatörlerin yanlış yazılmış halleridir. Bu sebeple önce konu olan operatörlerden biraz bahsetmek istiyorum. 

-- ya da ++

Bu operatörler tekil işaretçilerdir yani tek değer alıp onunla işlem yapan Unary operatörlerdenlerdir. Yanına yazılan değerin 1 arttırılmasını ya da 1 azaltılmasını sağlarlar. Ancak verilen değerin soluna ya da sağına yazılmasına göre farklı sonuçlar verirler. x++ şeklinde yazıldığında önce değeri alır sonra arttırma işlemini yaparken, ++x şeklinde yazıldığında arttırma işlemini yapıp değeri alır:

     int x = 5,

     y = x++, /* y = 5 , önce x i alıp y ye attı */

     z = ++x; /* z = 7 , üstteki işlemden 6 gelen x birde burda z ye gitmeden önce artıyor. */

     /* x = 7 , zaten z ye gitmeden önce 7 olmuştu.*/

Çıkartma işlemi de toplama ile aynı başka örnekler vermek gerekirse, x-- işlemi x-1 ya da --x de x-=1 ile aynı anlama geliyor diyebiliriz. Tabii ki toplama için de aynı. Aşağıdaki örnek kod satırı da 10dan geriye doğru sayan bir for döngüsü:

     for ( int x = 10; x > 0; x-- ) { cout<< x <<endl; }

>, <, <=, >=

Bunlar karşılaştırma operatörleridir, herhangi bir yerde iki değer arasında büyüklük küçüklük karşılaştırması yaparlar. 

>> ve <<

Bit düzeyinde kaydırma ifadeleridir. (Bitwise Shift) 

Bu hallerinde hiç kullanmadım ama sağ << sola kaydırma yapar ve sağa sıfır ekler, >> da tam tersi ama - olunca 1 arttırma yapıyor filan. Overloading yaparak yani anlamını genişleterek kullanacak olma ihtimaliniz çok yüksek. Mesela dışarıya çıktı verirken ya da kullanıcıdan değer alırken:

     cout << "x = " << x << "\n";

     cin >> x;

Üstteki verilen string, x değerini ve yeni satır oluşturan stringi dışarı aktarırken, alttaki da kullanıcıdan gelen veriyi x a atıyor.

Peki o zaman bu --> ve -->> ne işe yarıyor diye soruyorsanız; çirkin kod yazmanın hata vermemesi sonucu oluşan anlamsız bir işaret grubu. Eğer başka bir yerden gördüyseniz olması gereken halleri de şu şekilde:

     while( (x--) > 0 ) 

Bu x in kendi değeri 0 dan büyük mü diye bakıyor ve ona göre işlem yapıyor, sonra x i 1 azaltıyor. 

     while (x-- >> 0)

Bu işlem biraz daha karışık, eğer amaç gerçekten bit düzeyinde kaydırma yapmak ise, iki taraf arasında işaret (+,-) farklılığı olması işleri biraz daha değiştirebiliyor. Şurdan biraz daha inceleme yapmanızı tavsiye edebilirim: Using the << and >> Operators on Bits

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER