Neden `index = endeks ++` artım `index` yapar?

oy
0

** Dup: X = X ++ arasındaki fark nedir; v X ++ ;? **

Yani, bildiğimiz halde gerçekte kodda bunu asla yapmaz, hala merak ediyorum:

public static void main(String[] args) {
    int index = 0;
    System.out.println(index);   // 0
    index++;
    System.out.println(index);   // 1
    index = index++;
    System.out.println(index);   // 1
    System.out.println(index++); // 1
    System.out.println(index);   // 2
}

3 unutmayın sysouthala 1. Zihnimde hat index = index++;aynı şekilde içinde o zaman 1 ile endeksini artırır, dizine endeksini ayarlamak anlamına System.out.println(index++);o zaman 1 ile endeksini artırır println yönteme endeksi geçmesi anlamına gelir.

Bu ancak durum böyle değildir. Herkes neler olduğunu açıklayabilir misiniz?

Oluştur 09/12/2008 saat 23:00
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
4

Bu yinelenen bir sorudur.

DÜZENLEME: oh iyi P: Ben orijinal bulmak gibi olamaz

a = a ++ derleyici olarak yorumladığı postincrement kullanır:

a = function() {
   var old_value = a;
   a++;
   return old_value;
}

DÜZENLEME 2: arasındaki fark X = X ++ nedir; v X ++ ;?

Cevap 09/12/2008 saat 23:01
kaynak kullanıcı

oy
3

value++; sonrası artıştır.

int firtValue = 9;
int secondValue = firstValue++;

firstValue şimdi 10 olmakla birlikte, ikinciDeger 9, bu artırıldığına önce firstValue değeridir.

Şimdi önceden arttırma ile:

int firtValue = 9;
int secondValue = ++firstValue;

firstValue ve ikinciDeger şimdi 10, fistValue artırılır ve daha sonra değeri ikinciDeger için atanmış olur.

Cevap 09/12/2008 saat 23:04
kaynak kullanıcı

oy
1

Ben böyle bir şey hiç denemedim ama atama artım sonra olur o olmaya hazırım.

Yani gerçekten ne kadar derleyici söz konusu olduğunda geçerli:

  1. endeksini değerlendirin
  2. sonrası için endeks değerini tut
  3. endeks değerini arttırır
  4. Bu şekilde, dizinin eski değeri atamak artış silin.
Cevap 09/12/2008 saat 23:05
kaynak kullanıcı

oy
1

Artırma sonrası operatörü index++bu şekilde, değişken artırır, ama eski değerini verir

int i = 5;
System.out.println(i++);

5 yazdırmak henüz ben şimdi 6'ya eşittir olacaktır.

Eğer artış operasyon kullanımdan sonra değerini dönmek istiyorsanız ++index

Cevap 09/12/2008 saat 23:04
kaynak kullanıcı

oy
1

sentezleme değerlendirilmiştir sonra atama oluşur. Bir yan etki endeksi artırılır olarak her ne kadar indeksi Yani ++, 0 değeri vardır. Sonra değeri (0) endeksi atanır.

Cevap 09/12/2008 saat 23:02
kaynak kullanıcı

oy
0

İşler değerlendirilir sırayla bakmak gerekir.

Aşağıdaki açıklamada

indeksi = göstergesi ++;

üç şey endeksin ++ olduğundan 1), endeksi değeri 3) Birinci adımda belirlendi değeri daha sonra denklemin sol taraftaki değişkene atanır, endeks artırılır) 2 belirlenir olur

Cevap 09/12/2008 saat 23:06
kaynak kullanıcı

oy
-1

Bkz http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html postfix değerlendirme kuralları hakkında bilgi almak için.

Ayrıca bakınız http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#39438 bilgi için bkz.

Cevap 09/12/2008 saat 23:06
kaynak kullanıcı

oy
-1

Cevabı bu soruya yardımcı olmalıdır. Sonrası artım indeksi değerini güncellemek yapar ama güncellemeden önce değeri döndürür.

Cevap 09/12/2008 saat 23:04
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more