Дан одномерный массив типа char a[i], где i - номер элемента. Необходимо, чтобы был осуществлен выход из цикла while:
while (!(a[i] == 48) || !(a[i] == 49))
i++;
while (a[i] != 48) || a[i] != 49))
i++;
Пытался так пробовать - не работает. То бишь, когда код символа равен 48 или 49 должен произойти выход из цикла, а этого не происходит. Что не так?
Условие "когда x равно 48 или 49" (или, более математично, "когда x равно 48 или когда x равно 49") выглядит так:
(x == 48) || (x == 49)
Можно и без скобок, но я оставил для наглядности.
Значит, продолжать цикл, если условие НЕ выполнено, т.е.
while(!((x == 48) || (x == 49)))
Если применить НЕ к А ИЛИ Б, то это - НЕ А И НЕ Б - т.е. второй вариант
while(!(x == 48) && !(x == 49))
или, что то же самое
while((x != 48) && (x != 49))
Т.е. работать, пока код - и не 48, и не 49...
Думаю, проблем подставить вместо x - a[i] проблемы не составит?
while (!(a[i] == 48) || !(a[i] == 49)) означает, что если один из двух условий верно, то продолжить цикл. Как не крути, то элемент не может быть равен одновременно и 48 и 49, поэтому одно из двух условий всегда верно, и цикл продолжается.
while (a[i] != 48) || a[i] != 49)) , если тут скобки поставить правильно и написать
while ((a[i] != 48) || (a[i] != 49)), то это тоже самое, что и первый вариант.
Правильный ответ уже изложил вам Harry.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники