我有:
float number = 2.5;
if (number) cout << "1\n";
else cout << "2\n";
这是什么意思:if (number)
?也许如果数字被初始化?
我有:
float number = 2.5;
if (number) cout << "1\n";
else cout << "2\n";
这是什么意思:if (number)
?也许如果数字被初始化?
如果有任何非零值,则为真。在某些系统中,返回数值以确定进程是成功还是失败。大多数实现0
作为成功代码和-1
失败代码返回。如果一个进程成功了,那么你只需要知道它是成功的0
,如果它失败了,那么系统可以发送任何非零错误代码进行调试。但是不要依赖它来进行任何特定的实现。
我相信0
选择隐含表示false
,因为在布尔算术中它们的行为有点相似。
0|1=1
0&1=0
false|true = true
false&true = false
这意味着这个数字是“真实的”;这对于数字意味着它不是 0。
为了更有表现力地表明您正在使用非布尔类型的“真实性”,可以这样写
if (!!number)
这将首先将值转换为布尔负数,然后将其取反以表示数字真值。
不,它只是检查值(当转换为 时int
)是否非零,这在 C 中被视为“真”。
不可能查看 a 的值float
并确定它是否“已初始化”,您所拥有的只是 a 的位,float
并且不能保证未初始化的变量中存在任何特定模式(如果是这样的话,那么我认为该位置不会未初始化)。
您也可以使用例如指针来执行此操作,您经常会看到如下代码:
char *s = malloc(1024);
if( s )
{
/* use the buffer, allocation succeeded */
}
而不是更冗长(但在我看来,更清晰):
if( s != NULL )
{
}
含义(通常是生成的代码)完全相同。
如果条件对于除零以外的任何值都为真。所以如果number
不为零,则打印的值为1
else2