C ++语言If语句流程

时间:2015-12-19 13:56:03

标签: c++ if-statement

我想知道以下if条件的流程。它始终打印"打印2"。为什么(12& 14)小于10?

void main()
{
    int num=10;
    if(num < (12 && 14))
        cout<<"Print 1";
    else
        cout<<"Print 2";
    getch();
}

3 个答案:

答案 0 :(得分:2)

&&运算符未在int之间定义,而是在bool之间定义。所以这里发生的事情是1214被隐含地视为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 

Live demo

(12 && 14)被评估为(true && true),因为:

  • &&bool运营商
  • false为0,true为其他内容,因此1214相当于true

因此,(12 && 14)最终评估为true1(标准)。现在,(num < (12 && 14))被评估为10 < 1false }。

答案 2 :(得分:1)

true将会生成true

1表示c

中的n

所以此处1在您的计划中不低于Print 2。 因此,您的计划输出为{{1}}