ОБНОВЛЕНИЕ : Согласно вашему другому комментарию, ваше выражение неверно - оно не имеет ничего общего с "while", имеющим несколько условий.
ch != '\n' || ch != ' '
ВСЕГДА верно, независимо от того, какие символы.
Если символ НЕ является пробелом, второе условие истинно, поэтому ИЛИ истинно.
Если символ является пробелом, первое условие истинно (так как пробел не является новой строкой) и ИЛИ истинно.
Правильный путь ch != '\n' && ch != ' ' ...
СТАРЫЙ ответ:
При нормальных обстоятельствах нет никаких проблем с приведенным выше выражением (при условии, что вы хотели именно это).
Единственная проблема, связанная с вашим, заключается в том, что иногда она может быть меньше оптимальной (например, если b и c никогда не меняются в цикле, в этом случае вам необходимо кэшировать значение b!=1
в переменной).
while
с несколькими условиями может иметь проблему в одном случае - , если эти несколько условий действительно имеют предполагаемые побочные эффекты .
Это связано с ленивой оценкой || и && в C, так что если первое выражение истинно, остальные НЕ будут оцениваться и, следовательно, их побочные эффекты не произойдут.