Как работает ++ в JAVA?

учу я.п. JAVA, в одном видео курсе человек привёл такой пример:

int a = 5;
int b = 3;
int c = a + b++;

System.out.println(b);

при выводе на экран переменная b выдаёт значение 4, НО 4 это значение переменной с, а в sout выводится переменная b, изначально ведь значение переменной b=3;.
Почему он мне выдаёт b++, а не b?


Ответы (4 шт):

Автор решения: Эникейщик

Потому что b++ увеличивает значение b на единицу.

P.S. И значение с совсем не 4.

→ Ссылка
Автор решения: azlov

выражение b++; это инкремент. Означает, что мы используем текущее значение и после увеличиваем его на единицу.

int c = a + b++; // с = 5 + 3;

в следующей строке значение b=4

System.out.println(b); // b=4

→ Ссылка
Автор решения: Miron

b++ - это увеличение значения b на 1 и возврат значения b до этого увеличения
++b - это увеличение значения b на 1 и возврат нового значения

Соответственно

b = 999;
System.out.println(b++);
System.out.println(b);

даст вывод

999
1000

а

b = 999;
System.out.println(++b);
System.out.println(b);

даст вывод

1000
1000

Это все, что вам нужно знать об инкременте (с декрементом то же самое, только значение b уменьшается на 1, а не увеличивается).

Соответственно, когда вы в ЛЮБОМ контексте пишете b++, значение b увеличивается на 1 и возвращается ее значение до увеличения на 1.


Например, что выведет следующее?

int b = 1;
int a = b++ + b++ + ++b;
System.out.println(a + " " + b);

Для того, чтобы это узнать, поработаем компьютером.
Натыкаемся на первое b++. b теперь равен (то есть в ячейку памяти с переменной b записывается такое значение) 2. Возвращаем же 1 (то есть значение, которое b имело до увеличения на 1):

int a = 1 + b++ + ++b;

Натыкаемся на второе b++. b теперь равен 3. Возвращаем же 2:

int a = 1 + 2 + ++b;

Натыкаемся на ++b. b теперь равен 4. Возвращаем же 4 (то есть значение после увеличения на 1):

int a = 1 + 2 + 4;

Вывод тогда будет следующим:

7 4

→ Ссылка
Автор решения: Barmaley

Да что же вы так путано объясняете то?

b++;

эквивалентно

b=b+1;
→ Ссылка