Уменьшение на Java

int result = 5;    
result = result--;  
System.out.println(result);  

Почему результат равен 5?

Ответы

Ответ 1

Это ничего не делает:

   result = result--;  

Потому что result-- возвращает значение результата до того, как оно уменьшилось (в отличие от --result, которое возвращает значение результата после его уменьшения). И так как часть права = выполняется до =, вы в основном уменьшаете результат, а затем в той же строке задаете результат до значения, которое оно имело до декремента, тем самым отменяя его на практике.

Итак, вы можете написать

   result = --result;  

Но если вы хотите уменьшить результат, просто сделайте

result--; 

(или --result;, но очень необычно и нетипично использовать его самостоятельно, не делайте этого, когда вы не хотите использовать результат выражения, но просто хотите уменьшить)

Ответ 2

Поскольку значение выражения result-- является значением result до декремента. Затем result уменьшается, и, наконец, значение выражения присваивается result (переписывая декремент).

Ответ 3

Очень правильный вопрос!

Ваш код не работает, поскольку result-- выполняется только после замены =. Ваш код будет работать, если бы вы использовали префиксный оператор:

result = --result;

Однако это не имеет никакого смысла, поскольку вы можете просто написать:

--result;

Для более подробного объяснения см. этот вопрос/ответы о том, как работают операторы префикса/постфикса на Java.

Ответ 4

Это запутанная конструкция. Его же, как

int tmp = result;
result--;  
result = tmp;

Ответ 5

Используется оператор пост-декремента. Это потому, что вы пишете result--, но не --result. Значение выражения result-- является копией result, оно определяется до декремента. Вот почему он назывался пост-декрементом.

После определения значения выражения result--, result уменьшается. Но: Сразу после этого значение result переопределяется значением выражения result-- (result = 5), которое равно 5.

Ответ 6

result-- - пост декремент.. это означает, что значение сначала присваивается результату, а затем уменьшается.

вы можете найти этот ответ полезным.

Я считаю, что вы хотите:

int result = 5;     
result--; 
System.out.println(result);  

Ответ 7

измените на приращение префикса, чтобы получить желаемый результат, или удалите оператор присваивания:

int result = 5;
result = --result;
System.out.println(result);

Ответ 8

попробовать

Результат = - результат; он напечатает 4, и вы поймете, что такое различие между c-- и -c