所以我有以下代码:
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语句中调用Non-valid input
之后我仍然得到do_something()
? AKA为什么在do_something()
结束时其他人仍在运行?
答案 0 :(得分:5)
您在第二个else
之前遗漏了if
,这意味着如果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
,其余所有内容都将被跳过。
答案 1 :(得分:1)
您的else
与第二 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);
}
答案 2 :(得分:0)
两个if
语句彼此独立......
else是第二个if
条件。所以它永远不会进入第二个if
条件并始终进入其else
部分。
第一个if
条件没有else
部分。