15.14.6 Logical Complement Operator !

The type of the operand expression of the unary ! operator must be boolean, or a compile-time error occurs. The type of the unary logical complement expression is boolean.

At run time, the value of the unary logical complement expression is true if the operand value is false and false if the operand value is true.