我有:
float number = 2.5;
if (number) cout << "1\n";
else cout << "2\n";
这是什么意思:if (number)
?也许如果数字被初始化?
答案 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 )
{
}
意思(通常是生成的代码)非常相同。