Hoe werken het bericht (I ++) en Pre Increment (++ I) operators in Java?

Kunt u mij de uitvoer van deze Java-code uitleggen?

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

De uitvoer is 20 in beide gevallen


Antwoord 1, Autoriteit 100%

Helpt deze?

a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)
a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)

Het hoofdpunt is dat ++ade waarde verhindert en deze onmiddellijk retourneert.

a++Verhoogt ook de waarde (op de achtergrond), maar retourneert ongewijzigd waarde van de variabele – wat eruit ziet als het later wordt uitgevoerd.


Antwoord 2, Autoriteit 132%

++astappen en gebruikt vervolgens de variabele.
a++gebruikt en verhoogt vervolgens de variabele.

Als u

hebt

a = 1;

en u doet

System.out.println(a++); //You will see 1
//Now a is 2
System.out.println(++a); //You will see 3

Codaddict legt uw specifieke fragment uit.


Antwoord 3, Autoriteit 43%

In beide gevallen berekent het eerst de waarde, maar in post-increment bevat het oude waarde en na het berekenen retourneert het

++ een

  1. A = A + 1;
  2. retourneren A;

A ++

  1. TEMP = A;
  2. A = A + 1;
  3. retourtemp;

Antwoord 4, Autoriteit 13%

i = ++a + ++a + a++;

is

i = 6 + 7 + 7

Werkt: verhoog a tot 6 (huidige waarde 6) + verhoog a tot 7 (huidige waarde 7). De som is 13, tel deze nu op bij de huidige waarde van a (=7) en verhoog dan a tot 8. De som is 20 en de waarde van a nadat de opdracht is voltooid, is 8.

i = a++ + ++a + ++a;

is

i = 5 + 7 + 8

Werkt: bij de startwaarde van a is 5. Gebruik het in de optelling en verhoog het vervolgens naar 6 (huidige waarde 6). Verhoog a van huidige waarde 6 naar 7 om een andere operand van + te krijgen. De som is 12 en de huidige waarde van a is 7. Verhoog vervolgens a van 7 naar 8 (huidige waarde = 8) en tel deze op bij de vorige som 12 om 20 te krijgen.


Antwoord 5, autoriteit 6%

++averhoogt avoordat het wordt geëvalueerd.
a++evalueert aen verhoogt deze vervolgens.

In verband met je gegeven uitdrukking:

i = ((++a) + (++a) + (a++)) == ((6) + (7) + (7)); // a is 8 at the end
i = ((a++) + (++a) + (++a)) == ((5) + (7) + (8)); // a is 8 at the end

De parenteses die ik hierboven heb gebruikt, worden impliciet gebruikt door Java. Als je op deze manier naar de termen kijkt, kun je gemakkelijk zien dat ze zowel hetzelfde zijn als commutatief.


Antwoord 6, autoriteit 5%

In het bovenstaande voorbeeld

int a = 5,i;
i=++a + ++a + a++;        //Ans: i = 6 + 7 + 7 = 20 then a = 8 
i=a++ + ++a + ++a;        //Ans: i = 8 + 10 + 11 = 29 then a = 11
a=++a + ++a + a++;        //Ans: a = 12 + 13 + 13 = 38
System.out.println(a);    //Ans: a = 38
System.out.println(i);    //Ans: i = 29

Antwoord 7, Autoriteit 3%

++ A is Prefix Tracrement-operator:

  • Het resultaat wordt eerst berekend en opgeslagen,
  • Dan wordt de variabele gebruikt.

A ++ is postfix-increment-operator:

  • De variabele wordt eerst gebruikt,
  • Dan wordt het resultaat berekend en opgeslagen.

Nadat u zich de regels, EZ voor YA herinnert om alles te berekenen!


Antwoord 8, Autoriteit 2%

Ik geloof echter als u al uw uitspraken combineert en deze in Java 8.1 uitvoert, krijgt u een ander antwoord, althans dat is wat mijn ervaring zegt.

De code werkt als volgt:

int a=5,i;
i=++a + ++a + a++;            /*a = 5;
                                i=++a + ++a + a++; =>
                                i=6 + 7 + 7; (a=8); i=20;*/
i=a++ + ++a + ++a;           /*a = 5;
                                i=a++ + ++a + ++a; =>
                                i=8 + 10 + 11; (a=11); i=29;*/
a=++a + ++a + a++;            /*a=5;
                                a=++a + ++a + a++; =>
                                a=12 + 13 + 13;  a=38;*/
System.out.println(a);        //output: 38
System.out.println(i);         //output: 29

Antwoord 9, Autoriteit 2%

veronderstellen dat u

bedoelt

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

Dit evalueert naar:

i = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)

dus i is 6 + 7 + 7 = 20 en dus wordt 20 afgedrukt.

i = (5, a is now 6) + (7, a is now 7) + (8, a is now 8)

dus i is 5 + 7 + 8 = 20 en dus wordt 20 opnieuw afgedrukt.

a = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)

en nadat de hele rechterkant is geëvalueerd (inclusief het instellen van a op 8) DAN wordt a ingesteld op 6 + 7 + 7 = 20 en dus wordt 20 een laatste keer afgedrukt.


Antwoord 10, autoriteit 2%

wanneer a5 is, dan geeft a++een 5 aan de uitdrukking en verhoogt daarna a, terwijl ++averhoogt avoordat het getal aan de uitdrukking wordt doorgegeven (wat in dit geval a6 aan de uitdrukking geeft).

Dus je berekent

i = 6 + 7 + 7
i = 5 + 7 + 8

Antwoord 11, autoriteit 2%

Pre-increment betekent dat de variabele wordt verhoogd VOORDAT deze wordt geëvalueerd in de expressie. Post-increment betekent dat de variabele wordt verhoogd NADAT deze is geëvalueerd voor gebruik in de expressie.

Kijk daarom goed en je zult zien dat alle drie de opdrachten rekenkundig equivalent zijn.


Antwoord 12

pre-increment en post-increment zijn equivalent, zo niet in een uitdrukking

int j =0;
int r=0         
for(int v = 0; v<10; ++v) { 
          ++r;
          j++;
          System.out.println(j+" "+r);
  }  
 1 1  
 2 2  
 3 3       
 4 4
 5 5
 6 6
 7 7
 8 8
 9 9
10 10

Antwoord 13

a=5; i=++a + ++a + a++;

is

i = 7 + 6 + 7

WERKEN: Pre / Post-increment heeft “recht op links” associativiteit en heeft voorrang over de post, dus eerst van alle pre-increment zal worden opgelost als (++a + ++a) => 7 + 6. Dan is a=7verschaft om de increment = & GT te plaatsen; 7 + 6 + 7 =20EN a =8.

a=5; i=a++ + ++a + ++a;

is

i=7 + 7 + 6

WERKEN: Pre / Post-increment heeft “recht op links” associativiteit en heeft voorrang over de post, dus eerst van alle pre-increment zal worden opgelost als (++a + ++a) => 7 + 6. Den a=7is verstrekt om Increment = & GT te plaatsen; 7 + 7 + 6 =20EN a =8.


Antwoord 14

Ik geloof dat je al deze uitspraken anders uitvoert

samen uitvoeren zal resulteren = & gt; 38, 29

int a=5,i;
i=++a + ++a + a++;
//this means i= 6+7+7=20 and when this result is stored in i,
//then last *a* will be incremented <br>
i=a++ + ++a + ++a;
//this means i= 5+7+8=20 (this could be complicated, 
//but its working like this),<br>
a=++a + ++a + a++;
//as a is 6+7+7=20 (this is incremented like this)

Other episodes