关于c ++:if条件下的隐式bool求值

Implicit bool evaluation with if conditions

本问题已经有最佳答案,请猛点这里访问。

我有一个称为"count"的整数,它在满足某个条件时递增。所以我想问如果你写下这个条件会发生什么:

1
2
3
4
5
6
7
8
if(count % 2)
{
    return even_bit;
}
else
{
    return odd_bit;
}

问题主要是询问上面的条件是检查条件计数%2=0还是计数%2!=0,如果在整型数据类型变量的表达式中没有显式定义它。


如果表达式的计算结果为0,它将被解释为FALSE—对于任何非零值,它将被解释为TRUE。换言之,

1
if(count % 2)

等于

1
if(count % 2 != 0)

所以你的代码是"向后"的。如果声明是真的,那么count是奇数,您很可能希望返回odd_bit(此处仅作猜测)。


1
if(count % 2)

等于

1
if(count % 2 != 0)

现在,它将取决于count是偶数还是奇数。偶数情况下,count%2FALSE(返回odd_bit,如果count为奇数,则count%2TRUE(返回even_bit)。