Member 13734508 Ответов: 2

Почему ответ 5 а не 6


int a=5;
int a=a++ ;
Системы.из.код println(а);
ответ-5, а не 6.может ли кто-нибудь объяснить логику использования и смены оператора

Что я уже пробовал:

я думал, что это 6, но кажется, что это 5

Richard Deeming

Ответ таков: "ошибка компилятора" - вы не можете иметь две переменные с одинаковым именем.

2 Ответов

Рейтинг:
20

Richard Deeming

Предполагая, что Дублированное имя переменной является опечаткой в вашем вопросе, объяснение находится в документации:

Операторы инкремента/декремента могут быть применены до (префикс) или после (постфикс) операнда. Код result++; и ++result; оба конца в result будучи увеличенным на единицу. Разница лишь в том, что префикс версии (++result) вычисляется как увеличенное значение, тогда как постфиксная версия (result++) вычисляется до исходного значения. Если вы просто выполняете простое увеличение/уменьшение, то на самом деле не имеет значения, какую версию вы выберете. Но если вы используете этот оператор в части большего выражения, то тот, который вы выберете, может иметь существенное значение.

int a = 5;
int b = a++; // a = 6, b = 5
int c = ++a; // a = 7, c = 7


Maciej Los

5!

Рейтинг:
0

Jochen Arndt

Компилятор использует внутреннюю временную переменную при обработке постфиксного приращения. Если вы расширяете код с помощью дополнительной переменной как это делает компилятор вы можете понять почему это происходит:

int a = 5;
// int temp = a++;
// is the same as
int temp = a;
a = a + 1;
// Finally the value of the temp variable is assigned
a = temp;


Maciej Los

5!