我目前正在用C编码并使用switch&残培, 像这样:
c=getch();
switch(c)
{
case 17:
//something
break;
case 19:
//something else
break;
default: //loop to get the right "case"
break;
}
但是,我想在我们进入“默认”的情况下循环我的开关。有什么事吗?或者我应该制作一个“while(x!= 10)” - 例如 - 循环我的整个开关,如果我进入默认值,x == 10 ??
提前多多感谢!
答案 0 :(得分:6)
如果您发现goto
令人反感,您可以创建一个虚拟循环并在continue
之后使用default:
来强制进行下一次循环迭代:
do {
c = getch();
switch(c) {
case 17:
//something
break;
// ...
default:
continue;
}
} while (false);
答案 1 :(得分:3)
你可以使用do-while循环。例如
int done;
do
{
done = 1;
c =getch();
switch( c )
{
case 17:
//something
break;
case 19:
//something else
break;
default: //loop to get the right "case"
done = 0;
break;
}
} while ( !done );
答案 2 :(得分:1)
要获得最佳编码习惯,请忘记goto
存在。
以下代码可以满足您的需求
int done = 0; // indicate not done
while( !done )
{
done = 1; // indicate done
//c=getch(); not portable, do not use
c = getchar();
switch(c)
{
case 17:
//something
break;
case 19:
//something else
break;
default: //loop to get the right "case"
done = 0; // oops, not done, so stay in loop
break;
} // end switch
} // end while
答案 3 :(得分:0)
尽管大多数程序员都不鼓励使用goto
,但由于妨碍了跟踪程序的流程,你可以使用它。这些陈述在语法上是有效的。
#include <stdio.h>
#include <conio.h>
int main()
{
char c;
xx:
c=getch();
switch(c)
{
case 17:
//something
break;
case 19:
//something else
break;
default: //loop to get the right "case"
goto xx;
break;
}
return 0;
}