Cad é an difríocht theicniúil idir na habairtí "++ x" agus "x = x + 1" i Java?


freagra 1:

A chara, abair le do mhúinteoir gur fhreagair sé na cineálacha ceisteanna seo é féin, ionas gur gairmithe iad.

Ar aon chaoi, tagaimid ar an gceist:

Ligean le rá x = 9. Má úsáidimid ++ x anois i gceann de na habairtí, ciallaíonn sé go ndéantar luach x a mhéadú ar dtús agus ansin go n-úsáidtear é, ie cibé áit a n-úsáideann tú ++ x, úsáidtear luach 10 in ionad 9 agus fanann an luach 10 go dtí go dtarlóidh athrú eile.

Má úsáidimid anois (x = x + 1 nó x + = 1 nó x ++), úsáidtear an luach ar dtús agus ansin méadaítear é. Úsáideann an slonn ina n-úsáidtear x = x + 1 don chéad luach 9, agus ansin stóráiltear an luach 10 in x go dtí go dtarlaíonn athrú eile.

Sílim go bhfuil an difríocht soiléir. Mura bhfuil, fág trácht.


freagra 2:
curaim aicme {príomhlíon neamhní statach poiblí (Teaghrán [] args) {int x = 5; x = x + 1; Córas.out.println (x); x ++; Córas.out.println (x); }}
Tiomsaithe ón rang "quora.java" quora {quora (); Cód: 0: aload_0 1: glaonna modh speisialta # 1 // java / lang / Object. "" :() V 4: príomhlíon neamhní statach poiblí a thabhairt ar ais (java.lang.String []); Cód: 0: iconst_5 1: istore_1 2: iload_1 3: iconst_1 4: iadd // x = x + 1 5: istore_1 6: getstatic # 2 // réimse java / lang / System.out: Ljava / io / PrintStream; 9: iload_1 10: invokevirtual # 3 // method java / io / PrintStream.println: (I) V 13: iinc 1, 1 // x ++ 16: getstatic # 2 // réimse java / lang / System.out: Ljava / io / PrintStream; 19: iload_1 20: invokevirtual # 3 // method java / io / PrintStream.println: (I) V 23: filleadh}