Yes, in C99, see §6.5.3.3/4:
The result of the logical negation operator ! is 0 if the value of its operand compares
unequal to 0, 1 if the value of its operand compares equal to 0. The result has type int.
The expression !E is equivalent to (0==E).
So !x
and !!y
can only yield 0 or 1, as int
s.
For other operators, in C99, see also Is the "true" result of >, <, !, &&, || or == defined?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…