hubert
41 уровень

Говнокод #13

Пост из группы Архив info.javarush.ru
3681 участников
pp = pp++;
Комментарии (9)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизироваться
Kverde 31 уровень
6 июля 2014, 08:44
int p = 1;
p = p++;
System.out.println(p); // 1


Хотя если исходить из лекции 21, можно подумать что в выводе будет 2. Там был такой пример

int a = 3;
int b = a++;
// что происходит на самом деле
int a = 3;
int b = a;
a = a + 1;
aiv 27 уровень, Vologda
27 августа 2014, 12:24
Так тоже интересно получается:
a = 100 * a++ + 10 * a++ + a++

В результате первый a не изменяется, второй инкрементируется, а третий увеличен на 2 от первоначального значения. Причем результат не зависит от расставленных скобок, инкрементирование происходит от начала строки.
TRBLG 18 уровень, Томск
15 мая 2014, 17:15
pp; без изменений в итоге?
igor 25 уровень
5 мая 2014, 18:10
Можно и не писать эту строчку.
pp = pp++;

равносильно, т.к. постфиксная операция
p = p;

что имеет мало смысла.
phashik 28 уровень
10 мая 2014, 23:36
чисто на всякий случай распишу немного подробнее для тех, кто не знает.
++ имеет самый высокий приоритет среди всех операторов java (пруфлинк)
то есть эта операция всегда выполняется раньше любых других.
тут кто-нибудь может начать ругаться, что постфиксный оператор выполняется после всех вычислений, но это не так.
На самом деле компилятор просто подставляет вместо i++ старое значение переменной, а вместо ++i — уже новое, измененное значение.
Вот цитата:
The only difference is that the prefix version (++result) evaluates to the incremented value, whereas the postfix version (result++) evaluates to the original value.
Cawich 18 уровень, Самара
24 декабря 2015, 04:13
pp++;
на этом можно успокоиться, честное слово. никаких pp =… не надо
)))
gnev 24 уровень
5 мая 2014, 17:49
pp += 1;
igor 25 уровень
5 мая 2014, 18:07
Уверен?)
gnev 24 уровень
5 мая 2014, 18:14
вру )) изменение операнда — побочный эффект. pp не изменится.