这个问题在这里已有答案:
基本上,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
true
的范围是long int
,从-2147483647
到2147483647
只有一个例外:0
。这是怎么发生的?什么是if
实际上做的确定如此?
这是设计的预期行为。 C / C ++中的if (condition) { ... } else { ... }
语句计算一个布尔表达式,该表达式最终将是true
(if
块执行)或false
(else
块执行)。当您将整数作为条件传递时,它必须减少为true或false,并且编译器实际将其解释为if (integer != 0)
。对于任何整数类型(有符号或无符号),这都是相同的。
这是C / C ++中非常常见的习惯用语,尽管有人可能认为它不是最易读的符号,你应该总是明确表示你打算通过使用if (integer != 0)
验证整数是否为0。