我已经搜索了标准,但没有注意到上述部分。
它只是"除了0"和1还是编译器相关的?
答案 0 :(得分:23)
逻辑否定运算符
!
的结果是0,如果其操作数的值比较不等于0,1如果其操作数的值比较等于0.结果具有类型int
。
出现在C89 / C90,C99和C11中。
答案 1 :(得分:4)
正如霍布斯在答案中所说,section 6.5.3.3.5 of the C standard指出!0
评估为1
。
此外,此行为可用于将整数规范化为具有表达式0
的布尔值(即1
或!!x
)。
x
= 0
时,!!x
= !!0
= !1
= 0
。x
!= 0
,!x
= 0
时,!!x
= !0
= 1
。