C中的逻辑相等

时间:2012-06-08 16:35:23

标签: c boolean equality

[这似乎很奇怪,这不存在,所以如果它是重复的话,请提前道歉]

我想测试C中的逻辑相等性。换句话说,我想知道如果两个值都以与逻辑表达式相关的正常方式转换,两个值是否相等。

在C99中,我认为

(bool)a == (bool)b

给出我想要的东西。那是对的吗?在传统的C中写这个的正常方法是什么?

4 个答案:

答案 0 :(得分:10)

您通常会看到:

if ((a == 0) == (b == 0))

或者

if (!!a == !!b)

如果a为非零,则!!a的计算结果为1,否则为0。

希望这有帮助!

答案 1 :(得分:6)

在C中,零为假。如果你想将任何值转换为它的布尔等价物,那么标准方式(除了几乎不需要它之外)就是在!!前面添加一个表达式,如!!a中所示。在你的表达的情况下, !!a == !!b 可以简化为 !a == !b

答案 2 :(得分:2)

在C99之前的C版中,“施放到布尔”的传统惯用方式是!!

答案 3 :(得分:1)

传统c中没有(bool)。使用int处理True / False。您可以使用

检查布尔相等性
a ? b : !b