Все операторы C , которые выдают логические значения true / false, всегда дают результат типа int
со значением 0
для false, 1
для true.
Этоне так для всех выражений C , которые дают логически истинные / ложные значения.Например, функции классификации символов is*()
, объявленные в <ctype.h>
(isdigit()
, isupper()
и т. Д.), Возвращают 0
, если условие ложно, но могут возвращать любое ненулевое значение, если условие истинно..
Пока вы используете результат непосредственно как условие:
if (isdigit(c)) ...
if (!isdigit(c)) ...
if (isdigit(c) || islower(c)) ...
и не не пытайтесь сравнить его с чем-либо:
if (isdigit(c) == 1) ... /* WRONG */
if (isdigit(c) == true) ... /* ALSO WRONG */
это не должно вызывать никаких проблем.
(Вы можете безопасно сравнить результат с 0
или false
, но для этого нет веских причин;для чего нужен оператор !
.