我认为这是一个简单的问题,但我正在努力解决以下问题。在我的示例中,我有以下语句(语言为 C):
int foobar
if (foobar)
{
// do something.
}
现在,如果我是正确的,那么当foobar
不为零时,这种说法是正确的。所以它应该与if (foobar!=0)
大致相同。
但是,如果foobar
变成负数会发生什么?
负数或正数。任何不是 0 的东西都是if
的真实值
另外,考虑一个负数:-1
C 中的 -1 在内部表示为: 0xFFFFFFFF
,在这种情况下,如果我将其转换为无符号整数,它将是一个正数。
但是在C99标准编译器出现之后,我建议你用 <stdbool.h>
相反。使猜测工作减少很多:
在这里阅读有关 stdbool.h 的信息
相同,
if (foobar)
表示 foobar 不为零,所以它是正数还是负数都无所谓,它仍然不为零
如果 foobar 是负数(它仍然不同于零),您的语句应该返回 true,但您应该避免这种测试,因为以这种方式测试可以具有不同"true"值的变量不是最佳实践。