public static void main(String[] args) {
int a = 3;
int b = ++a + (a-- * ++a);
System.out.println(b);
}
}
ArturZ
42 уровень
Решил задачу, но не понимаю как и в какой момент а становится равным 4, может кто-нибудь подсказать?
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
きせりょた
12 июня 2022, 06:20
разве скобки не выполняются первее?
+1
ГоффMaster
10 мая 2022, 19:45
При вычислении сначала вместо переменных подставляются числовые значения, слева направа, с соблюдением де- и инкриментов, пре- и пост. И только потом вычисляется всё выражение с соблюдением очерёдности выполнения операций.
Изначально а = 3. В выражении же место первого а подставится 4 (преинкримент) вместо второго та же 4, потом выполнится постдекримент, в уме пишем 3, а вместо третьего а - опять 4 (преинкримент тройки, которая в уме)
Получится b = 4 + (4 * 4)
+7
ArturZ
10 мая 2022, 20:49
Спасибо, так понятнее))))))))
0
Ant
10 мая 2022, 14:16
преинкремент сначала добавляет единицу. потом использует.
+6
ArturZ
10 мая 2022, 20:49
Большое спасибо!
+2
energet1k93
17 сентября 2022, 13:36
Не понимаю почему a-- равен 4 а не 3?
0
energet1k93
17 сентября 2022, 14:04
ведь если
0
Ant
18 сентября 2022, 00:31
префиксные операторы меняют значение переменной a
0