[英]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.