hubert
41 уровень

Говнокод #13

Статья из группы Архив info.javarush
участников
pp = pp++;
Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
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
27 августа 2014, 12:24
Так тоже интересно получается:
a = 100 * a++ + 10 * a++ + a++

В результате первый a не изменяется, второй инкрементируется, а третий увеличен на 2 от первоначального значения. Причем результат не зависит от расставленных скобок, инкрементирование происходит от начала строки.
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 не изменится.