繁体   English   中英

在C ++中使用if / else进行奇怪的输出

[英]Strange output using if/else in C++

所以我有以下代码:

char command;
cin >> command;
if ( command == 'P' ) {
    do_something();
}
if ( command == 'Q' ) {
    cout << "Exit\n";
    exit(0);
}
else {
    cout << "command= " command << endl; //use for debugging
    cout << "Non-valid input\n";
    exit(1);
}
cout << "exit at completion\n";
exit(0);
}

当我使用P输入时, do_something()完成后的输出是:

"output from do_something() function"
command= P
Non-valid input

我的问题是,为什么在第一个if语句中调用do_something()之后仍然获得Non-valid input AKA为什么do_something()完成时else仍然运行?

您在第二个if之前保留了else ,这意味着如果command != 'Q' (对于P是正确的),则将执行exit块。

你可能想做

if ( command == 'P' ) {
    do_something();
}
else if ( command == 'Q' ) { // Note the 'else'
    cout << "Exit\n";
    exit(0);
}
else {
    cout << "command= " command << endl; //use for debugging
    cout << "Non-valid input\n";
    exit(1);
}

这样,当命令为P ,将调用do_something ,其余的将被跳过。

您的else第二个( if不是第一个)关联。 因此,在完成第一个if之后进入第二个if的else部分。 那就是为什么你得到这个。 你应该用这个

char command;
cin >> command;
if ( command == 'P' ) {
    do_something();
}
else if ( command == 'Q' ) {
    cout << "Exit\n";
    exit(0);
}
else {
    cout << "command= " command << endl; //use for debugging
    cout << "Non-valid input\n";
    exit(1);
}
cout << "exit at completion\n";
exit(0);
}

两个if语句彼此独立... else是第二个if条件。 所以,它永远不会进入第二个if条件永远为它的else部分。 第一个if条件没有else部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM