Что вы имеете в виду под «логикой»?
Конкретное поведение оператора !
? Он определяется стандартом языка. Он производит 0
для ненулевого аргумента. И 1
для нулевого аргумента. Так определяется.
Обоснование такого определения? Ну, предполагается, что поведение logical-not
. Исторически на языке C логическое «ложное» представлено нулевыми целыми значениями, а все ненулевые интерпретируются как логические «истинные». Итак, это то, что вы наблюдаете в своем эксперименте. Когда оператор !
(или любой другой логический оператор в C) должен генерировать «истинный» результат, он использует 1
для его представления, а не только для некоторого произвольного ненулевого значения.
логики is '0 == false' и' else else == true' – Griffin
http://stackoverflow.com/questions/2319766/how-does-logical-negation-work-in-c –