Логика действий постинкрементов

77
06 марта 2022, 04:20

Помогите разобраться в логике действий. Что левый оперант всегда сохраняется отдельно и потом возвращается более менее осознал в некоторых примерах что нашел, но в этом не получается понять ход действий. Пробовал прогнать через инспекцию в Intelij и она сообщает что второе инкрементирование вообще не срабатывает, а почему не понимаю.

int x = 5;
x = x++ + x++;
System.out.println(x);

Программа выводит:

 11
Answer 1

Постинкремент сначала вернет значение переменной, а после увеличит ее значение на 1.

Поэтому это выражение

int x = 5;
x = x++ + x++;

можно описать как:

x = 5 + 6;

Первый x++, вернет 5, но увеличив значение до 6, поэтому второй x++ вернет 6, увеличив значение до 7.

Однако, у нас уже есть присваивание x, поэтому туда запишется сумма -- 11

Проверяем:

int x = 5;
int y = x++ + x++;
System.out.println(y + " - " + x);
// 11 - 7
Answer 2

запись x++ (post increment) инкррементирует значение после сложения

x = 5;
y = x++ + x++;
y = 5   + 6;
x = 7;

если хотите инкрементировать до, используйте ++x (pre increment)

x = 5
y = ++x + ++x;
y = 6   + 7;
x = 7

или так

x = 5
y = ++x + x++;
y = 6   + 6;
x = 7;

++a

a = a + 1;
return a;

a++

temp = a;
a = a + 1;
return temp;
READ ALSO
валидация формы, накопление ошибок

валидация формы, накопление ошибок

пытаюсь в массиве вывести все ошибки которые были допущены, но в нем оказывается только одна, остальные выводит

100
Cookies Laravel

Cookies Laravel

Есть domain1com и sub

83