if语句整数

Bar*_*sen 27 c int if-statement

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

int foobar

if (foobar)
{
// do something.
}
Run Code Online (Sandbox Code Playgroud)

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

但是,如果foobar成为负数,会发生什么?

Ani*_*nge 47

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

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

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

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

在这里阅读stdbool.h

  • 负数的表示是实现定义的.此问题也无关紧要,只有*值*很重要,无论它如何表示.在这种情况下,`int`不会转换为`unsigned int`. (3认同)

And*_*rsK 5

同样,

if (foobar) 
Run Code Online (Sandbox Code Playgroud)

意味着 foobar 不为零所以它是正数还是负数都没有关系,它仍然不为零