Soru & Cevap

Tekli Operatörler ...

08.12.2013 - 01: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ış?

2 Görüntülenme

3 Cevap

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

Profile picture for user EnesGonultas
EnesGonultas
24.01.2014 - 09:00

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

picture-399-1379511904.jpg
halil
10.12.2013 - 01:58

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

Profile picture for user canciloglu
canciloglu
08.12.2013 - 02: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.