Если утверждение оценивается как ложное, даже если условие истинно - PullRequest
0 голосов
/ 09 апреля 2019

Моя программа пропускает оператор if counter==4, даже если счетчик равен 4. Когда я пытаюсь отладить, он никогда не проверяет этот оператор if, он полностью пропускает его каждый раз.

    int num;
    int counter = 1;
    while (file >> num) {
        if (counter == 1) {
            //code
        }
        if (counter == 2) {
            //code
        }

        if (counter == 2) {
            //code
        }

        if (counter == 4) {   //completely skips this if
            counter == 1;
        }
        counter++;
    }

1 Ответ

0 голосов
/ 09 апреля 2019

У вас есть этот кусок:

    if (counter == 4) {   //completely skips this if
        counter == 1;
    }

Он не пропущен (насколько видно из кода, который вы разместили). Это просто ничего не делает. Вы сравниваете counter с 1, а затем выбрасываете полученное логическое значение.

Чтобы исправить, переключитесь на назначение, используйте counter = 1.

Ваш компилятор должен был предупредить вас о том, что «код не имеет никакого эффекта». Включите предупреждения (-Wall -Wextra для gcc и clang , /W3 или /W4 для Visual Studio - это хорошо) и исправьте их .

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