Не работает выражение cont = cont++
Сам код:
public class ForDemo {
public static void main (String args[]){
int cont;
for (cont = 0; cont < 5; cont = cont++){
System.out.println("Значение счетчика:" + cont);
}
System.out.println("Готово");
}
}
Должно выводить:
> Значение счетчика:0
> Значение счетчика:1
> Значение счетчика:2
> Значение счетчика:3
> Значение счетчика:4
> Готово
Так выводит только при выражении cont = cont + 1
При двух плюсах уходит в бесконечность:
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Давай сначала. У тебя имеется постинкремент myValue++. В таком случае состояние объекта (переменной) должно измениться, но при этом возвращено предыдущее состояние. Поэтому происходит три операции:
int temp = myValue)++myValue)return temp)то есть:
operator++(int) {
int temp = myValue;
myValue = myValue + 1;
return temp;
}
Таким образом происходят действия и с cont, а так как своё сохранённое состояние temp в итоге возвращается в ту же переменную, то в итоге в нее всегда записывается ноль. В конце каждой итерации cont равен нулю, условие цикла всегда получается 0 < 5 и получается бесконечный цикл.
Как итог: нужно писать либо просто cont++ либо просто ++cont либо cont = cont + 1.
Просто cont++ сработает потому, что оператор отработает, переменная увеличится, а return temp будет делать некуда. Грубо говоря. И всё сработает как надо.
Ну или быть немного извращенцем и написать cont = ++cont, т.к. преинкремент вначале увеличивает значение на 1 и потом возвращает.
Продвижение своими сайтами как стратегия роста и независимости