35

我认为这是一个简单的问题,但我正在努力解决以下问题。在我的示例中,我有以下语句(语言为 C):

int foobar

if (foobar)
{
// do something.
}

现在,如果我对此是正确的,那么当foobar不为零时,此陈述为真。所以它应该与if (foobar!=0).

但是如果foobar变成负数会怎样?

4

3 回答 3

62

消极或积极。任何不是 0 的都是真值if

另外,考虑一个负数:-1

-1 在 C 内部表示为: 0xFFFFFFFF,在这种情况下,如果我将其转换为无符号整数,它将是一个正数。

但是在 C99 标准编译器出现之后,我建议你 <stdbool.h>改用它。使猜测工作少了很多:

在此处阅读有关 stdbool.h 的信息

于 2013-02-01T12:52:27.980 回答
6

同样,

if (foobar) 

表示 foobar 不为零,因此无论是正数还是负数都无所谓,它仍然不为零

于 2013-02-01T12:53:21.657 回答
0

如果 foobar 是负数(它仍然不同于零),您的语句应该返回 true,但您应该避免这种测试,因为以这种方式测试可能具有不同“真”值的变量不是最佳实践。

于 2013-02-01T12:58:30.980 回答