if语句整数

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

int foobar if (foobar) { // do something. } 

现在,如果我对此是正确的,当foobar不为零时,这种说法是正确的。 所以它应该与if(foobar!= 0)相同;

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

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

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

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

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

在这里阅读stdbool.h

同样的

 if (foobar) 

意味着foobar不为零,所以无论是正面还是负面都无关紧要,它仍然不是零

如果foobar是一个负数(它仍然不等于零),你的语句应该返回true,但是你应该避免那种测试,因为测试那些可以以这种方式具有不同’true’值的变量不是最好的做法。