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.
- 7 > 3 , doğru
- 2 < 6 , doğru
- 2 > 5 , yanlış
- 5 >= 5 , doğru
- 1 <= 4 , doğru
>> ve <<
Bit düzeyinde kaydırma ifadeleridir. (Bitwise Shift)
- 2 << 4 , 32 eder
- -8 >> 3 , -1 eder
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