Ne'oluyor bu ifade ile s? b = a (a = 5)
a = 5
b = a (a = a 5)
b = 15 sonucu
Neden ilk? bundan sonra bir değişiklik yap (a = 5)? Ama neden ikinci bir değişiklik var mı? Burada tam olarak adım ne oluyor?
CEVAP
İfadeler soldan sağa doğru - her zaman, gruplandırma bağımsız olarak değerlendirilir. Eşdeğer için:
a = 5;
int lhs = a; // 5
int rhs = (a = a 5); // Increments a by 5 (i.e. a=10), and rhs=10
b = lhs rhs; // 15
Yani bu yürüttü sonra, a
10. Ama o a
sonuç 15 yerine 20 bu yüzden ana ayrıca, ilk terim için değerlendirilmiş sonra sadece olur.
Gerçekten önemli değerlendirme amacıyla ilgili bölümü öncelik olarak aynı olmadığı anlaşılır. Bu göz önünde bulundurun:
int x = First() Second() * Third();
Öncelikçarpma Second()
Third()
ama First()
arama sonuçları için geçerlidir anlamına gelir hala ilk değerlendirilir. Diğer bir deyişle, bu ifade ile eşdeğer
int lhs = First();
int rhs = Second() * Third();
int x = lhs rhs;
Daha fazla ayrıntı için Eric Lippert's blog post on predence, associativity and ordering bkz.
Şiddetle bu olsa gibi kod yazma tavsiye etmem.
@PathVariable nokta (.) Spring MVC kes...
Güvenlik, kararlılık, hız: ekran'...
Nasıl Python düzenli ifade eşleşen tüm...
Res ifade eder.sendfile atma yasak hat...
Lambda ifade inen OrderBy?...