当我向'choice'输入字符时,将重复执行默认语句。 “ cin”指令不会阻止执行。
#include<iostream>
using namespace std;
main()
{
int choice;
do{
cout<<"Enter your choice: ";
cin>>choice; //I'm giving character i/p even though 'choice' is int
switch(choice)
{
case 1:cout<<"\n 1 \n";
break;
case 2:cout<<"\n 2 \n";
break;
case 3:cout<<"\n 3 \n";
break;
case 4:cout<<"\n 4 \n";
return 0;
default:cout<<"An Invalid choice."<<endl;
}
}while(1);
cout<<"\n Hello";
}
答案 0 :(得分:-1)
cout语句不应该被阻塞,那将是您所指的cin。
在这种情况下,cin将读取值,但不读取其后的换行符,因此下次读取值时,您将读取换行符。
因此,您需要在读取下一个值之前先读取新行的值。
答案 1 :(得分:-2)
通过为选择变量赋予结束限制来尝试以下代码。
main(){
int choice;
do{
cout<<"Enter your choice: ";
cin>>choice; //I'm giving character i/p even though 'choice' is int
switch(choice)
{
case 1:cout<<"\n 1 --\n";
break;
case 2:cout<<"\n 2 \n";
break;
case 3:cout<<"\n 3 \n";
break;
case 4:cout<<"\n 4 \n";
return 0;
default:cout<<"An Invalid choice."<<endl;
}
}while(choice>4);
cout<<"\n Hello";
}
中断总是中断最内层的循环。
break语句终止执行最小的 switch 或迭代语句。
如果要打破这两个循环,请使用标签并跳至goto。 因此,基本上来说,它进入了无限循环,因为您的休息只是从开关情况中摆脱出来。