Уменьшение на 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