2008-10-06 12 views

cevap

19

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.

-3

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; 
+0

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

+0

Bu zorlu. Soruyu alakalı ve yararlı buldum. –

3

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') 
9

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.

İlgili konular