是' !!' C中的现有运营商?

时间:2014-09-07 10:19:19

标签: c operators

在浏览基础设施代码时,我发现了这一点:

return !!(fin.flags & FIN_ACCEPT);

这是否具有连续两个逻辑符号以外的含义?

2 个答案:

答案 0 :(得分:4)

!是合乎逻辑的否定。 !!是两次应用的逻辑否定。

它通常用于将布尔表达式值规范化为01

答案 1 :(得分:1)

用于将数值转换为布尔值。例如:

a = 5;
a = !!a;
!(!一)

---> !(!5)----> !(0)----> 1

a的值为1。