, anlarlar?öncesi ve sonrası arttırma/azaltma operatörleri şu derlemek olacak neden C#
int i = 1;
++i++;
(Derleyici hatası: bir artış veya azalış operatörünün işlenen değişken, özellik veya dizinleyici olmalıdır.)
, anlarlar?öncesi ve sonrası arttırma/azaltma operatörleri şu derlemek olacak neden C#
int i = 1;
++i++;
(Derleyici hatası: bir artış veya azalış operatörünün işlenen değişken, özellik veya dizinleyici olmalıdır.)
diğer sonucuna işlenen birini çalıştıran, Bir artış/azaltma sonucu bir değerdir - ve bir değer üzerinde arttırma/azaltma kullanamazsınız, bu ayarlanabilecek bir değişken olmalıdır.
Bence: böyle çirkin ve gereksiz yapıları önlemek için. Ayrıca bir (1x ADD 2) yerine 2 işlem (2x INC) kullanır.
Evet, biliyorum ... "ama ikiye kadar artırmak istiyorum ve ben bir l33t g33k'üm!"
Eh, bir inek olacak ve böyle bir yanlışlıkla hata gibi görünmüyor şey yazmayın:
i += 2;
Bu biraz sert değil mi? Sadece neden derlenmediğini soruyordu - derleyici tasarımı hakkında bir soru, kod stili hakkında değil. – fluffels
Bu zorlu. Soruyu alakalı ve yararlı buldum. –
Tahminimce, ++ i, daha sonra ++ işlecini uygulamaya çalıştığınız bir tamsayı değer türü döndürecektir. Bir değer tipine yazamayacağınız gibi görünmek (0 ++ hakkında düşünmek ve eğer mantıklı olursa), derleyici bir hata verecektir. Eğer
5++;
veya
f(i)++;
bir fonksiyon döner diyemeyiz
++i (i = 2, returns 2)
2++ (nothing can happen here, because you can't write a value back into '2')
Aynı nedenle: Bir başka deyişle
, bu ifadeleri bu dizi olarak çözümlenir Bir değeri, bir değişken değil. Arttırma operatörleri de değerleri döndürür, ancak değerlere uygulanamaz.
Bu onun yasal bir sorusu, neden onun için? – Will