@Nikkich
Начинающий программист

Почему в java результатом i += i++ будет 0?

Исходный код выглядит так:
for (x = 0, i = 0; x < 10; x++)
{ i += i++; 
System.out.print(i+"\t"); }


Почему выводится 0 при компиляции?
  • Вопрос задан
  • 262 просмотра
Решения вопроса 3
gbg
@gbg
Любые ответы на любые вопросы
i++ - постфиксный инкремент. Так как тут нету прибамбасов с точкой следования из C++ и C, тут однозначно получится:
i+=i++ можно без проблем переписать как
result=i+i++
считаем постфиксный инкремент i++, это значит берем из i 0, теперь увеличиваем i на 1
result=0+0
i=1
считаем сложение 0 + 0 (то значение, которое было в i перед вычислением выражения, и то, что мы вытащили при префиксном инкременте)
result=0
i=1
теперь записываем в i результат прибавления 0 к 0, перетирая ранее записанную туда 1.
i=result //тут в i запишется 0
Ответ написан
Комментировать
@lz961
Приоритет операций?
1) сложение i и i (tmp=0)
2) увеличение i на 1 (i=1)
3) присваивание i значения значения из буфера (i=tmp=0)
Ответ написан
Комментировать
  1. Вычисляется сумма i + i. Получаем 0
  2. Выполняется инкремент i. i = 1
  3. i Присваивается значение из вычисления в п.1


Не используйте неоднозначные конструкции
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы