Значения истины, "генерируемые" C, всегда равны 0 или 1.
Это правда (хех), что ненулевое выражение обычно считается "истинным" в if
и т. Д., Но когдасам язык должен генерировать значение истинности, которое он использует 0 для false и 1 для true.
Так как оператор !
является логическим оператором, он всегда будет иметь значение 0 или 1.
Таким образом, в вашем случае z
будет установлено на 1.
Обновление : см. эту запись FAQ для дальнейшего обсуждения, это то, что я имел в виду"сгенерированный" формулировка.Удивительно, но у него даже такой же каламбур (я не просматривал эту запись до того, как написал свой ответ).Не уверен, что это признак того, что у меня хорошее чувство юмора или нет.