Что происходит, когда параметр передается с помощью оператора -? - PullRequest
0 голосов
/ 01 февраля 2020

я наткнулся на следующий код в Java:

public static void foo (int a, int b) {
    System.out.println("a: " + a);
    System.out.println("b: " + b);
}

public static void main(String[] args) {
    int c = 1;
    foo(c--, c);
    System.out.println("c: " + c);
//The output is:
//a: 1
//b: 0
//c: 0

Может кто-нибудь объяснить, почему это так? Я бы догадался об обратном, что c-- затронет только первое печатное заявление. Но если он навсегда изменил значение c, почему первая строка печати все еще печатается 1?

1 Ответ

1 голос
/ 01 февраля 2020

Вы можете увеличить с помощью ++c или c++, аналогично, вы можете уменьшить с помощью --c или c--

для ++c и --c, вы фактически говорите Java «Измените значение, затем сделайте что-нибудь с новым значением»

для c++ и c--, вы говорите java «Загрузите значение, затем измените его».

Теперь это объясняет, почему A равно 1, а C равно 0. Но почему B также равно 0?

Когда вы вызываете функцию, аргументы разрешаются по порядку. Обычно это уместно, только если вы передаете прямые результаты метода в качестве аргумента. Например,

, вызывая methodX( methodY(), methodZ()), где сигнатуры методов равны void methodX(int a, int b); int methodY(); и int methodZ();, а затем метод Y будет выполняться до Z, который выполняется до X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...