这是什么意思:if(number)

时间:2013-06-19 05:42:33

标签: c++ if-statement

我有:

float number = 2.5;
if (number) cout << "1\n";
else        cout << "2\n";

这是什么意思:if (number)?也许如果数字被初始化?

4 个答案:

答案 0 :(得分:3)

如果有任何非零值,则为真。在某些系统中,返回数值以确定进程是成功还是失败。大多数实现将0作为成功代码返回,将-1作为失败代码返回。如果一个进程成功,那么您需要知道的是它是成功的0,如果失败则系统可以发送任何非零错误代码进行调试。但是不要依赖它来进行任何具体的实施。

我认为0被选中隐含地表示false,因为在布尔算法中它们的行为有点类似。

0|1=1
0&1=0
false|true = true
false&true = false

答案 1 :(得分:3)

这意味着这个号码是“真实的”;对于数字而言,这意味着它不是0.

为了更明确地表明你使用非布尔类型的'真实性',可以写

if (!!number)

首先将值转换为它的布尔负值,然后将其否定以表示数字真值。

答案 2 :(得分:1)

如果条件对于零以外的任何值变为true。因此,如果number不为零,则打印值为1其他2

答案 3 :(得分:1)

不,它只是检查值(转换为int时)是否为非零,在C中被视为“真”。

无法查看float的值并确定它是否已“初始化”,您所拥有的只是float的位,并且无法保证任何特定模式存在于未初始化的变量中(如果是这种情况,则在我看来,该位置不会被取消初始化)。

您可以使用例如指针也是如此,你经常会看到如下代码:

char *s = malloc(1024);
if( s )
{
  /* use the buffer, allocation succeeded */
}

而不是更详细(但在我看来,更清楚):

if( s != NULL )
{
}

意思(通常是生成的代码)非常相同。