C中的逻辑相等

and*_*oke 8 c boolean equality

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

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

在C99,我认为

(bool)a == (bool)b
Run Code Online (Sandbox Code Playgroud)

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

tem*_*def 10

你通常会看到这个:

if ((a == 0) == (b == 0))
Run Code Online (Sandbox Code Playgroud)

要么

if (!!a == !!b)
Run Code Online (Sandbox Code Playgroud)

因为!!a计算结果为1,如果一个是非零的且否则为0.

希望这可以帮助!


Yus*_*f X 6

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