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 ++a
de 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%
++a
stappen 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
- A = A + 1;
- retourneren A;
A ++
- TEMP = A;
- A = A + 1;
- 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%
++a
verhoogt a
voordat het wordt geëvalueerd.
a++
evalueert a
en 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 a
5 is, dan geeft a++
een 5 aan de uitdrukking en verhoogt daarna a
, terwijl ++a
verhoogt a
voordat het getal aan de uitdrukking wordt doorgegeven (wat in dit geval a
6 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=7
verschaft om de increment = & GT te plaatsen; 7 + 6 + 7 =20
EN 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=7
is verstrekt om Increment = & GT te plaatsen; 7 + 7 + 6 =20
EN 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)