Если сомневаешься, напиши.Итак, мы начинаем с ...
int z = 2;
int x = F.func(z);
, который вызывает ...
public static int func(int x) {
x = x + 2;
x = funcB(x);
return x++;
}
Итак, ввод x
равен 2
x = x + 2
= 2 + 2
= 4
, поэтому x
теперь равно 4 x = funcB(x)
, что вызывает ...
public static int funcB(int z) {
return ++x + z;
}
- Тогда ввод
z
равен 4
++x + z
, x
равен 0
++x
- это приращение префикса, означающее, чтоинкремент будет применяться ДО выполнения остальной части оператора, делая x
= 1
1 + z
= 1 + 4
= 5
Назад кfunc
return x++;
- это трюк (и общая область ошибок), x++
- это постфиксное добавление, означающее, что x
будет увеличиваться ПОСЛЕ выполнения инструкции(ради аргумента), что означает, что метод вернет 5