我认为这是一个简单的问题,但我正在努力解决以下问题。在我的示例中,我有以下语句(语言是C):
int foobar
if (foobar)
{
// do something.
}
现在,如果我是正确的,当foobar
不是零时,这句话是正确的。因此,它应该与if (foobar!=0)
大致相同。
但是,如果foobar
变成负数会发生什么呢?
发布于 2013-02-01 20:52:28
负或正。在if
中,任何不为0的值都是真值
另外,考虑一个负数:-1
-1在-1\f25 C-1\f6内部表示为:-1\f25 0xFFFFFFFF
-1\f6,在这种情况下,如果我将其转换为无符号整数,它将是一个正数。
但是在C99标准编译器出现之后,我建议您改用<stdbool.h>
。大大减少了猜测的工作量:
发布于 2013-02-01 20:53:22
同样的,
if (foobar)
表示foobar不为零,因此无论是正还是负都无关紧要,它仍然不是零
发布于 2013-02-01 20:58:31
如果foobar是一个负数(它仍然不同于零),你的语句应该返回true,但你应该避免这种测试,因为以这种方式测试可能具有不同“true”值的变量不是最佳实践。
https://stackoverflow.com/questions/14646718
复制相似问题