C ++ сравнение и убывание переменных - PullRequest
0 голосов
/ 12 октября 2011
 if(y-- > 0 && matriz[x][y--]!=9 && matriz[x][y--]!=0)

Когда я делаю это, моя переменная y не уменьшается, верно?И я могу сделать это сравнение y--> 0 ?

Представьте, что у меня есть y = 0, я хочу сравнить, если -1> 0.

Спасибо

Ответы [ 3 ]

5 голосов
/ 12 октября 2011

При условии, что все тесты пройдут , ваш код фактически эквивалентен следующему:

if (y > 0)
{
    y--; // post-decrement

    if (matriz[x][y] != 9)
    {
        y--; // post-decrement

        if (matriz[x][y] != 0)
        {
            y--; // post-decrement

            // all true
        }
    }
}

Если произойдет сбой, вы все равно уменьшите (эквивалентность будет в предложении else), ноЯ опущу это для краткости.

Надеюсь, этого достаточно, чтобы уточнить.Я нахожу это довольно громоздким, и если y < 2 в начале, вы получите отрицательный индекс, что, вероятно, плохо.

1 голос
/ 12 октября 2011

Если y=0, ваши последние два условия не будут оцениваться, так как первое условие не выполнится.

Если вы хотите, чтобы ваше первое сравнение было -1>0, вам нужно уменьшить префикс: --y > 0

0 голосов
/ 12 октября 2011

Да, вы можете сделать сравнение. Почему ты пишешь такой код? Пожалуйста, пожалуйста, напишите, может ли это быть читабельным и понятным.

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