Несколько постфиксных и префиксных операций в одной строке - PullRequest
0 голосов
/ 04 февраля 2019
int i=0;
int j = --i;

int k = i++ + --i + i-- + j-- + --i + i;

System.out.print("k= "+k);  // k=-10

Кажется, я не понимаю, как получилось, что значение k равно -10?

Вот что, по моему мнению, должно было произойти.Результат должен был быть -5 согласно моим расчетам.

Expression                       |Evaluation                | Current Values
                                 |                          | i=0  ,j=-1   
i++                              | 0                        | i=1  ,j=-1   
i++ + --i                        | 0 + 0                    | i=0  ,j=-1   
i++ + --i + i--                  | 0 + 0 + 0                | i=-1 ,j=-1   
i++ + --i + i-- + j--            | 0 + 0 + 0 + -1           | i=-1 ,j=-2   
i++ + --i + i-- + j-- + --i      | 0 + 0 + 0 + -1 + -2      | i=-2 ,j=-2   
i++ + --i + i-- + j-- + --i + i; | 0 + 0 + 0 + -1 + -2 + -2 | i=-2 ,j=-2   

Пожалуйста, исправьте меня, если я ошибаюсь.

* После исправления моей ошибки, принимая i за 0 вместо-1 *

Выражение теперь оценивается как -10 (-1 + -1 + -1 + -1 + -3 + -3).Спасибо.

Expression                       |Evaluation                   | Current Values
                                 |                             | i=-1, j=-1
i++                              | -1                          | i= 0, j=-1
i++ + --i                        | -1 + -1                     | i=-1, j=-1
i++ + --i + i--                  | -1 + -1 + -1                | i=-2, j=-1
i++ + --i + i-- + j--            | -1 + -1 + -1 + -1           | i=-2, j=-2
i++ + --i + i-- + j-- + --i      | -1 + -1 + -1 + -1 + -3      | i=-3, j=-2
i++ + --i + i-- + j-- + --i + i; | -1 + -1 + -1 + -1 + -3 + -3 | i=-3, j=-2

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Я думаю, что вам не хватает изменения значения 'i' в

int j = --i;

Здесь я поворачиваю -1, затем j = -1

Итак, вы начинаете с i = -1,значения j = -1.

0 голосов
/ 04 февраля 2019

Если вы правильно сделаете уменьшение и увеличение, вы получите следующее: int k = -1 + (-1) + (-1) + (-1) + (-3) + (-3), что равно -10

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