Инкременты

  • 9
  • Недоступна
Внеси исправления в метод main(), чтобы он выводил в консоли число 20. В методе можно изменять только постинкремент на преинкремент и наоборот, а также постдекремент на предекремент и наоборот.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (78)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Слава
Уровень 12, Москва, Russian Federation
29 июня, 20:14
Первая лекция, которой я крайне недоволен. Очень плохо объяснено правильное вычисление постинкрементов и преинкрементов, час бился, в итоге прочитал другую статью и понял. Практически уверен, что не залезая в интернет мало кто разберется с первого раза в этой задаче, не зная заранее и не используя метод тыка. Любо для тупых как я ссылка на подробную пошаговую статью:https://skillbox.ru/media/base/inkrement_i_dekrement_v_java/
Михаил Кулешов
Уровень 12, Минск, Belarus
7 августа, 13:55
Спасибо, после прочтения все стало понятно_ )
Taris
Уровень 13, Киев, Украина
12 июня, 18:43
"Чем ниже операторы расположены в таблице, тем ниже их приоритет". Сообветственно скобки должны иметь приоритет выше этих всех экскрементов. Но в задаче выходит что для получения результата 20 нужно слачала пройтись по переменным тупо с лева на право присвоив им новые значения, а потом, используя правила арифметики, вычислить результат. Вопрос? Что же в приоритете?
Вася Пупкин Android Developer
12 июня, 12:20
public static void main(String[] args) { int a = 3; int b = ++a + (a++ * --a); System.out.println(b); } Ответ 20, но почему не принимается ?
Vadim Maleev Software Developer
21 июня, 16:45
там условие "постинкремент на преинкремент и наоборот, а также постдекремент на предекремент" т.е. ++ на -- менять нельзя
Андрей Инженер
25 мая, 14:43
Я не сразу понял что присваивание декрементов будет происходить без учёта наличия скобок. Сначала пройдёт присвоение, а уже потом действие с ними в скобках. А не как я решил, что сначала присваивание начнётся с переменных в скобках
Akira
Уровень 11
11 мая, 05:29
И что тут не правильно, если 20 выводит
Андрей Инженер
25 мая, 14:40
сами знаки менять нельзя, только положение- перед или после переменной, вы изменили знаки в выражении в скобках
Роман мастер-энергетик
13 апреля, 09:27
Крайняя задача кажется дурдомом, так как информации в лекции мало, через дебаггер в ide всё равно будет не понятно, с помощью комментариев конечно дошло. Вот несколько примером, для тех кто не разобрался
int a = 3;
        int b = ++a + (a-- * ++a);
        //       4  + (4   *  4 ) = 20

        int c = a++ + (a-- * a++);
        //      3   + (4   *  3) = 15
        // значение последнего инкремента a++ нигде в выражении не учитывается

        int d = a++ + (++a * a--);
        //      3   + (5   * 5) = 28
        // значение последнего декримента a-- нигде в выражении не учитывается
Apolona Solar
Уровень 14, United States
27 мая, 14:11
Здравствуйте! Объясните, пожалуйста, почему не учитываются последние выражения? Правильно ли я понимаю, что в с а++ = 3, т.к. увеличение на 1 еще не произошло? А а-- = 4 почему тогда?
Роман мастер-энергетик
27 мая, 15:48
потому что значение инкремент, то есть условно переменная a содержит в себе значение 5 и к ней после применяется a-- (или a++) , это прочитать надо так слева направо , то есть а(5) и после него идёт уменьшение (--) или увеличение (++), то есть эта операция инкремента/декремента идёт после того как значение a задействованно в выражении, поэтому казалось бы что оно должно быть со значением 4, но операция вычисления происходит после операции умножения ( говорю о примере) вот если стоит ++а или -аа, тогда да, сначала значения 5 или прибавится на единицу и будет 6 или отнимется и будет 4, тогда выражение по считается по этим значениям. это называется постинкремент (вроде так или что то такое) в инкременте значение последнее не учитывается, но оно учтется если вы следом напишите ещё одно выражение где будет тоже задействована переменная a (уже со значением 4или6)
Anonymous #00111111
Уровень 23, Москва, Russian Federation
6 апреля, 13:13
20? Перельман : Гуманитарий;
George
Уровень 15, Podgorica, Montenegro
20 февраля, 14:17
Самое легкое и лучшее объяснение вот
Алексей
Уровень 11, Москва, Russian Federation
6 июля, 14:50
Да, самый топчик=)
Денис Викторович
Уровень 11, Краснодар
9 февраля, 10:43
Решил разобраться самостоятельно, путем изнурительных вычислений , с целью понятия логики исчисления. Через 20 минут разобрался, и спокойно решил уравнение. Но компилятор не пропустил мой вариант решения, хотя ответ так же равен 20. Будьте внимательны к условиям задачи.
IGOR
Уровень 13, Russian Federation
22 февраля, 19:10
Что-то плохо ты разобрался, раз не додумался поменять местами чтобы проходило по условию)
Денис Викторович
Уровень 11, Краснодар
8 марта, 22:45
Как-никак, но разобрался ) Не знаю вот только, насколько это пригодится в дальнейшем обучении)
GrowAgain
Уровень 10, Москва, Russian Federation
8 февраля, 23:14
НАДЕЮСЬ ПОМОЖЕТ ПОНЯТЬ 😘 int а = 3; int b = --a + (--a * ++a); Правильный ответ 4 1 5 2 4 3 1. -- а (3 - 1 = 2) 🍒 2. --а (2 - 1 = 1) 🍒 3. ++а (1 + 1 = 2) 🍒 4. 1 * 2 = 2 5. 2 + 2 = 4 --------------------------------------------------------------------------------------------------------------------------------------------- int а = 3; int b = --a + (a++ * ++a); Правильный ответ 10 1 5 2 4 3 1. --а (3 - 1 = 2) 🍒 2. а++ (2) 🍒 3. ++а (2+1+1 = 4) 🍒 4. 2 * 4 = 8 5. 2 + 8 = 10 --------------------------------------------------------------------------------------------------------------------------------------------- int а = 3; int b = a++ + (a++ * ++a); Правильный ответ 27 1 5 2 4 3 1. a++ (3) 🍒 2. a++ (3 + 1 = 4) 🍒 3. ++a (4 + 1 + 1 = 6) 🍒 4. 4 * 6 = 24 5. 3 + 24 = 27 --------------------------------------------------------------------------------------------------------------------------------------------- int а = 3; int b = a++ + (--а * a++); Правильный ответ 12 1 5 2 4 3 1. a++ (3) 🍒 2. --a (3 + 1 - 1 = 3) 🍒 3. a++ (3) 🍒 4. 3 *3 = 9 5. 3 + 9 = 12
Katas
Уровень 10, Russian Federation
11 февраля, 14:22
Супер-круто, спасибо за примерчики и объяснение 😉
Vitalij Bronau
Уровень 18, Добруш, Белоруссия
12 марта, 14:18
Спасибо!!!!!Очень помогло!!
xsidorovx
Уровень 14, Москва, Russian Federation
21 мая, 10:34
очень спасибо, основное - последовательное изменение а. то есть не только приоритет операций, но и изменение переменной после каждой. спасибо