我想知道以下if
条件的流程。它始终打印"打印2"。为什么(12& 14)小于10?
void main()
{
int num=10;
if(num < (12 && 14))
cout<<"Print 1";
else
cout<<"Print 2";
getch();
}
答案 0 :(得分:2)
&&
运算符未在int
之间定义,而是在bool
之间定义。所以这里发生的事情是12
和14
被隐含地视为bool
s(即true
s,与任何非零int
一样。两个&&
之间true
的结果再次为true
。然后将此bool
值与int
文字10
进行比较,以便将其提升为int
的{{1}}值。由于1
不小于10
,因此1
条件的结果为if
,并执行false
分支,打印else
答案 1 :(得分:1)
只需使用std::cout
或调试器:
int main()
{
int num=10;
std::cout << "(12 && 14) is " << (12 && 14) << std::endl;
std::cout << "num < (12 && 14) is " << (num < (12 && 14)) << std::endl;
if(num < (12 && 14))
std::cout<<"Print 1";
else
std::cout<<"Print 2";
}
显示器:
(12 && 14) is 1
num < (12 && 14) is 0
Print 2
(12 && 14)
被评估为(true && true)
,因为:
&&
是bool
运营商false
为0,true
为其他内容,因此12
和14
相当于true
因此,(12 && 14)
最终评估为true
为1
(标准)。现在,(num < (12 && 14))
被评估为10 < 1
,false
}。
答案 2 :(得分:1)
true
将会生成true
,
1
表示c
n
所以此处1
在您的计划中不低于Print 2
。
因此,您的计划输出为{{1}}