Это не говорит о том, что оператор не будет выполнен, просто конкретные выражения внутри него.Предупреждающее сообщение выглядит следующим образом:
testcompare.c:67:35: warning: code will never be executed [-Wunreachable-code]
if(*pInput == (' ' || '\t' || '\n'))
^~~~
testcompare.c:67:27: warning: code will never be executed [-Wunreachable-code]
if(*pInput == (' ' || '\t' || '\n'))
^~~~
Обратите внимание на стрелки, указывающие на '\n'
и '\t'
, они говорят, что никогда не будут выполнены.
Оператор ||
является оператором короткого замыкания, он выполняет правый операнд, только если левый операнд является ложным.
В этом случае, поскольку ' '
является константой, и известно, что она истинна (любая char
кроме '\0'
(верно), два других операнда не нужно выполнять для определения результата.