9 комментариев

gnev
pp += 1;
igor
Уверен?)
gnev
вру )) изменение операнда — побочный эффект. pp не изменится.
igor
Можно и не писать эту строчку.
pp = pp++;

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

что имеет мало смысла.
phashik
чисто на всякий случай распишу немного подробнее для тех, кто не знает.
++ имеет самый высокий приоритет среди всех операторов 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
pp++;
на этом можно успокоиться, честное слово. никаких pp =… не надо
)))
TRBLG
  • TRBLG
  • 0
  • Комментарий отредактирован 2014-05-15 17:15:29 пользователем TRBLG
pp; без изменений в итоге?
Kverde

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
Так тоже интересно получается:
a = 100 * a++ + 10 * a++ + a++

В результате первый a не изменяется, второй инкрементируется, а третий увеличен на 2 от первоначального значения. Причем результат не зависит от расставленных скобок, инкрементирование происходит от начала строки.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.