Оператор приращения работает по-разному во время работы и отладки

Вот часть кода, которая странно работает при отладке

public static void main(String[] args) { //Line-1
    int a = 5; //Line-2
    System.out.println(++a); //Line-3
} //Line-4

Когда я запускаю его в обычном режиме, он выдает результат как 6, что правильно. Но во время отладки я установил точку останова на Line-3, и в первый раз, когда я проверил значение ++a, оно показало 6, в следующий раз это было 7,8,9...

Когда я завершил программу, она показала вывод как 10 в консоли. Почему это?

Эти решения C++ — поведение Eclipse отличается при отладке и запуске, Как работает оператор post Increment ++ во время инициализации не т дать какое-либо правильное представление.


person Arun Sudhakaran    schedule 23.05.2019    source источник
comment
Отладчик при оценке выражения увеличивает a снова и снова при каждой оценке. то есть оценка ++a имеет побочные эффекты и не может быть выполнена без влияния на состояние приложения.   -  person Michael    schedule 23.05.2019
comment
@Майкл, верно, вместо проверки ++a, если я проверю только a, изменений не будет   -  person Arun Sudhakaran    schedule 23.05.2019


Ответы (1)


Когда вы оцениваете значение выражения ++a в режиме отладки, вы действительно увеличиваете переменную. Так что это влияет на конечный результат.

person Vincent Passau    schedule 23.05.2019