Почему в данной задаче ответ 0, а не 1. Ведь
var = ++var; это уже 7.
public class Program
{
public static void main(String[] args) {
int var = 6;
var = ++var - var++;
System.out.println(var);
}
}
Anonymous #2201973
19 уровень
Задача на инкременты.
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #2201973
17 мая 2021, 08:30
var = ++var - var++;
Я правильно понимаю, что в выражении выше ++var = 7 и var++ тоже равно 7 и поэтому получается 0?
0
hidden #2322530
17 мая 2021, 08:47
да.
преинкремент увеличивает значение и сразу возвращает обновленное значение
постинкремент возвращает старое значение, а только потом увеличивает.
0
Anonymous #2201973
16 мая 2021, 09:32
Спасибо! Этот код дан в тестах SoloLearn.
0
Alexander G.
9 мая 2021, 05:56
Писать так - это тяжкое преступление.
Никогда не мешайте в рамках одного выражения операции/методы без побочных эффектов с операциями/методами, обладающими побочными эффектами.
Используйте инкремент и декремент только там, где нет разницы между префиксным и постфиксным вариантом: отдельно от всего, на своей собственной строчке кода.
В данном случае унарные операции имеют более высокий приоритет и выполняются первыми.
+1
hidden #2322530
16 мая 2021, 10:08
ну постинкремент на отдельной строке да, а преинкремент на отдельной строке не используют.
в этой задаче приоритет не при чем от слова совсем. при чём тут именно постинкремент, что он не даст результата. поэтому переменная отнимет сама себя и будет всегда 0, если только она не будет изначально равна Integer.MAX_VALUE
+1