cout << (++a) * (--b) << endl;
int a= 5, b = 3;
cout << (++a) * (--b) << endl;
a++ ile yaparsan o kod satırındaki işlemler bittikten sonra a, 1 arttırılır.
++a ile yaparsan o kod satırındaki işlemlerinin bitmesi beklenmeden a, 1 arıttırılır.
int b = 3;
cout << b++ << " " << b << endl;
int* function(int* a) {
*a += 1;
return a;
}
int* function(int *b){
int temp = *b;
*b -= 1;
return &temp;
}
++a = 5;
b++ = 3;
std::cout << ++a + (++a * ++a) << std::endl;
std::cout << b++ + (b++ * b++) << std::endl;
std::cout << (b++ * b++) + b++ << std::endl;
Öyle yaparsa öyle sonuç alır. Konuda onu sormuyor.Böyle dener misin?
Örneğimde de belirttiğim gibi ilk cümleniz yanlış. İkisi de anında değeri artırır.a++ ile yaparsan o kod satırındaki işlemler bittikten sonra a, 1 arttırılır.
++a ile yaparsan o kod satırındaki işlemlerinin bitmesi beklenmeden a, 1 arıttırılır.
std::cout << a++ + (++a * ++a) << std::endl;
ifadesini çalıştırırsanız görebilirsiniz. Kaynaktaki tabloda görebileceğiniz gibi a++ daha öncelikli olduğu için önce o çalışır ve 8 değerini döndürüp a'yı 9 yapar. Sonra ise kalanlar çalışıp 11*11 yapar.Hayır. Amaç sadece değeri artırmaksa ++a şeklinde yazılmalı.a'yı bir arttırmak istiyorsan a++ yazmalısın.
Kullanıldıktan önce/sonradan kastınız prefix/postfix ise operatör önceliğine göre.Satır bittikten sonra değil, kullanıldıktan önce veya sonraya göre artış/düşüş yaşanıyor.
std::cout << ++a + a + ++a << std::endl;
ile std::cout << a + ++a + ++a << std::endl;
arasında değer olarak fark yok. İlkinde önce ++a var diye sadece a olanın değeri değişmiyor.Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.