Turkcell | Geleceği Yazanlar

Soru & Cevap

Tekli Operatörler

08.12.2013 - 13:44

https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-101/tekli-operatorler sayfasında

Bu programda m ifadesini

m= ++x–––­­­y+z++ ;

şeklinde yazsaydık, aynı sonucu elde ederdik. (C ve C++’ta bu durumda hata mesajı alınır.)

yazıyor. Ben Eclipse'de denedim. Ama hata mesajı aldım, acaba yanlış mı yapıyorum? Yoksa sayfada mı yanlış yazılmış?

3064 Görüntülenme

3 Cevap

Enes GÖNÜLTAŞ
24.01.2014 - 09:00

[code]diyalogOlusturucu.setMessage(ulkeler[position]) .setCancelable(false) .setPositiveButton("Tamam", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } });[/code]

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Halil Keskin
10.12.2013 - 13:58

Eğitimdeki hatayı düzelttik. Can'ın dediği gibi bu işlemin yapılması mümkün değil. 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Can Çiloğlu
08.12.2013 - 14:39

Merhaba Enes,

Evet haklısın eğitimdeki bu ifade hatalı olmuş, bu hatayı yakaladığın için seni tebrik ederim. Kısaca nedenini açıklamak gerekirse:

"++" veya "--" operatörleri aslında iki iş birden yapar, birincisi değer arttırma ve azaltma ikincisi yeni değeri atama yani assignment. Yani "i++" dediğimiz zaman önce i'nin değerinin 1 arttır, sonra bu yeni değeri i'e ata demiş oluruz.

http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.14.2 adresindeki Java spec dokümanından da görebileceği gibi

1) ++ veya -- operatörlerinin sonucu bir değişken değil değerdir.

2) Bu operatörler çalışmak için değere değil referansa yani değişkene ihtiyaç duyarlar.

Eğitimdeki yanlış örnekte ise: ++x---y denmiş, burada, "++x" işleminin sonucu bir değerdir, değişken değil. halbuki sonra bu değer üstünde tekrar azaltım işlemi yapılmaya kalkılmış "2--" yapar gibi. Nasıl compiler "2--" işlemine hata veriyorsa ++x-- işlemine de hata verecektir. Sen de bu yüzden hata alıyorsun.

 

En kısa zamanda eğitimi düzelteceğiz.

Teşekkürler.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

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