Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

При int a=0 почему выражение System.out.println(a++ -a-- +" "+ a); дает результат -1 0?

stosorok stosorok Ученик (93), закрыт 4 года назад
Друзья, помогите, голову уже всю сломал, есть код на Java

int a=0;
System.out.println(a++ -a-- +" "+ a);

почему результатом является -1 0?
Если первая -1 и пробел - понятно, то почему последняя a равна нулю, если мы делаем декремент от -1 ?

Объясните, пожалуйста.
Лучший ответ
Jurijus Zaksas Искусственный Интеллект (423716) 4 года назад
>то почему последняя a равна нулю, если мы делаем инкремент от -1 ?
А чему по-твоему будет равен инкремент -1? Впрочем, сдаеццо мне, что тут как раз декремент.
На самом деле я так понимаю, что все это работает так:

Запоминается a=0 как уменьшаемое
Делается инкремент 0++
Делается вычитание 0-1
Выводится результат -1
Делается декремент 1-- -получается 0.

Иначе объяснить это -1 я не могу...
stosorok stosorokУченик (93) 4 года назад
Все верно, именно декремент.
Но почему делается декремент единицы, а не -1?
Jurijus Zaksas Искусственный Интеллект (423716) Потому что он относится к переменной, а не к результату вычитания.
Остальные ответы
izzeii Знаток (309) 4 года назад
Если ++(--) написан после a, а не до, то она увеличится на единицу ТОЛЬКО в следующей строчке, т. е после вывода
Похожие вопросы