Увеличения на публикации

Опитвам се да разбера увеличаването на публикациите с помощта на тези 3 примера. Но ми е трудно да разбера последното.

1.

int x = 0;
x++;
System.out.println(x); //prints out 1 

2.

int x = 0;
x = x++;
System.out.println(x); //prints out 0. 

x само по себе си съдържа 1, но не и референтната променлива от лявата страна, сочеща към x, като се вижда, че е след нарастване. Така се връща оригиналната стойност.

3.

int x = 0;
do {
    x++;
} while (x <= 9);
System.out.println(x); // prints out 10

Но според моите разсъждения, базирани на първите 2 примера, трябва да отпечата 9. x само по себе си първо съдържа 1, след това 2, 3, 4, 5, 6, 7, 8, 9. Може ли някой да обясни резултата за последния пример?


person Helenesh    schedule 20.04.2015    source източник
comment
Пример 3 няма нищо общо с пример 2, тъй като вътре няма код x=x++;. Отнася се само за пример 1, така че резултатът е правилен, нали?   -  person Thomas Weller    schedule 20.04.2015
comment
когато x==9 условието все още е валидно, така че x се увеличава отново, затова се отпечатва 10   -  person Alexandru Cimpanu    schedule 20.04.2015


Отговори (2)


Докато x ‹= 9, цикълът while няма да бъде прекратен, така че x трябва с 10 след цикъла.

person Eran    schedule 20.04.2015
comment
Допълнителна забележка: Не забравяйте, че операторът Do се изпълнява преди да бъде оценено условието while. - person GregD; 20.04.2015
comment
@GregD В този случай няма значение. Дори ако цикълът беше while (x <= 9) {x++;}, пак ще получите 10 след цикъла. - person Eran; 20.04.2015
comment
Знам (тъй като е ‹=), но все пак исках да заявя това. Следователно това е бележка към вашия отговор ;). - person GregD; 20.04.2015

Цикълът продължава, докато x > 9. Първата стойност, за която това условие е вярно, е 10.

person Thorsten Dittmar    schedule 20.04.2015