基本上,if语句如何分析整数是真还是假?这两行简单的行打印出"Hello",正整数 764:
int a=764;
if(a){ cout<<"Hello"; }else{ cout<<"Bye"; } //Hello
如果我将整数从正数更改为负数 (-231(,它也会显示"Hello":
int a=-231;
if(a){ cout<<"Hello"; }else{ cout<<"Bye"; } //Hello
但是如果我a
设置为0
,它会变得false
int a=0;
if(a){ cout<<"Hello"; }else{ cout<<"Bye"; } //Bye
它与long int
的范围true
,从-2147483647
到2147483647
,只有一个例外:0
。这是怎么回事呢?if
实际上在做什么来确定这一点?
设计使然的预期行为。C/C++ 中的 if (condition) { ... } else { ... }
语句计算一个布尔表达式,该表达式最终将true
(if
块执行(或false
(else
块执行(。当您将整数作为条件传递时,它必须简化为 true 或 false,并且编译器实际上将其解释为 if (integer != 0)
。对于任何整数类型(有符号或无符号(,这都是相同的。
这是 C/C++ 中非常常见的成语,尽管有人可能会争辩说它不是最清晰的符号,您应该始终明确表示您打算通过使用 if (integer != 0)
来验证整数是否为 0。