C++ 为什么所有可能的整数都是;“真的”;在C++;,但是0不是吗?

C++ 为什么所有可能的整数都是;“真的”;在C++;,但是0不是吗?,c++,if-statement,int,implicit-conversion,boolean-logic,C++,If Statement,Int,Implicit Conversion,Boolean Logic,基本上,if语句如何分析整数是真还是假?这两行简单的文字以正整数764打印出“Hello”: int a=764; if(a){ cout<<"Hello"; }else{ cout<<"Bye"; } //Hello 它的true范围为long int,从-2147483647到2147483647,只有一个例外:0。 这是怎么发生的?如果真的这样做了,那么这是什么呢?这是设计的预期行为。C/C++中的if(condition){…}else{…}语句计算布尔表达式,

基本上,if语句如何分析整数是真还是假?这两行简单的文字以正整数764打印出“Hello”:

int a=764;
if(a){ cout<<"Hello"; }else{ cout<<"Bye"; } //Hello
它的
true
范围为
long int
,从
-2147483647
2147483647
,只有一个例外:
0

这是怎么发生的?如果真的这样做了,那么这是什么呢?

这是设计的预期行为。C/C++中的
if(condition){…}else{…}
语句计算布尔表达式,该布尔表达式最终将是
true
(执行
if
块)或
false
(执行
else
块)。当您传递一个整数作为条件时,它必须减少为true或false,编译器实际上将其解释为
if(integer!=0)
。这对于任何整数类型(有符号或无符号)都是相同的


这在C/C++中是一个非常常见的习惯用法,尽管有人可能会说它不是最清晰的符号,并且您应该始终明确表示您打算通过使用
if(integer!=0)

来验证整数是否为0,看起来从int到Boolean的转换是基于integer的值进行的。如果为0,则返回false,对于除0以外的任何内容,则返回true。您可以在此处查看:哎呀,谢谢您的编辑!;)
int a=-231;
if(a){ cout<<"Hello"; }else{ cout<<"Bye"; } //Hello
int a=0;
if(a){ cout<<"Hello"; }else{ cout<<"Bye"; } //Bye