Soru & Cevap

Artım ve Azaltım Operatörleri ...

01.12.2013 - 01:57

Merhabalar. Artım ve azaltım operatörleri ile ilgili takıldığım bir nokta var.

  • public class uyg8 {
  • public static void main(String[] args) {
  • int m=4;
  • m= -m++ ;
  • System.out.println("m="+m); } }

Bu kodda icra edilecek işlemler sırasıyla ;

  • Hafızada m adında ve int türünde bir değişken oluşturup, bu değişkene 4 değerini atamak.
  • m değişkeninin önce negatifini almak, ardından bu değişkenin değerini 1 arttırmak.
  • m değişkeninin değerini ekrana yazdırmak.

değil midir? Bu şekilde hesaplandığında ;

  • İlk tanımlamada m = 4
  • Negatifleme ile m = -4
  • Arttırma ile m = -3

şeklinde olması gerekmez mi? Buna rağmen m değişkeni için ekrana yazdırılan değer -4 oluyor. İzah edebilir misiniz lütfen?

Şimdiden teşekkürler.

4 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-9492-1385898173.png
Gediz1337
01.12.2013 - 03:08

En sonda yazdığınız örneği uygulayınca anladım. Teşekkürler.

picture-3606-1408610132.jpg
cgural
01.12.2013 - 02:28

m=4 iken "m=m++" ifadesiyle soldaki m, 5 olmuyor.

m=m++ ifadesiyle, önce m değerinin bir kopyası alınıyor ve sol tarafa atılıyor, sonra m değeri bir artırılıyor. Ancak bu artırılan değer orada kalıyor, tekrar atama yapılmıyor.

(not: "m=++m" olsa dediğiniz olurdu. Çünkü ++m ile doğrudan artırma yapılıyor ve böylece bir kerede sol tarafdaki değişkene atanabiliyor)

Dolayısıyla

m=-m++ ifadesinde önce "-m" değeri sol tarafa atanıyor (bu aşağıda yazdırılıyor), sonra sağdaki m'nin değeri bir artırılıyor ki bu değer hiçbir yerde kullanılmıyor.

İsterseniz bir kez int m=4 için tek başına println içinde m++ ve ++m ifadelerini bir ekrana yazdırın.