我在main中有一大块代码,如果'code'中的某个变量为true,则想返回main的顶部并再次运行。我该怎么做?
#include <stdio.h>
void main(void)
{
// if varable in code is true return to here
//code
//
//
//
}
答案 0 :(得分:3)
int main(void)
{
int gotostart=0;
// if varable 'gotostart' in code is true return to here
beginning:
// code [...]
if(gotostart)
goto beginning;
return 0;
}
正如亚美斯正确指出的那样,goto
值得一些警告。最受欢迎的是Dijsktra的GOTO statements considered harmful,因为它对结构化编程有点适得其反。
更有条理的方法是:
int main(void)
{
int gotostart=0;
do { // if varable 'gotostart' in code is true return to here
// code [...]
} while(gotostart)
return 0;
}
答案 1 :(得分:2)
int main (void)
{
bool keep_looping = true;
while (keep_looping)
{
// code
if(done_with_stuff)
{
keep_looping = false;
}
}
}
答案 2 :(得分:1)
从main()
中删除代码并将其放入函数中:
static void my_function(void)
{
/* lots of stuff here */
}
然后打电话给它:
int main(void)
{
my_function();
if(condition)
my_function();
return 0;
}
在我看来,这比使用循环更简洁,因为用例并不是真正的“循环”。如果你想做一两次的事情,把它分解成一个函数,然后调用一次或两次函数。作为奖励,它还为您提供了一个很好的机会来为您的程序正在执行的操作引入名称(函数名称),这有助于使代码更易于理解。
答案 3 :(得分:0)
实现所讨论内容的最简单方法可能是使用上面提到的while循环,但是这样做:
while(true){
if(something){
continue;
} // then use break when you want to leave the loop all together
}
答案 4 :(得分:0)
如果你的程序重复相同的模式,那么while()
循环是最好的方法
但是如果你的程序有点麻烦,也许你更喜欢goto
语句,以便跳转到你想要的标签:
int main(void) {
// Initial stuff
jump_point:
// Do more stuff
if (some-condition)
goto jump_point;
// ... ...
return 0;
}
我认为你应该以一种自然而清晰的循环方式设计你的程序:
int main(void) {
while(terminate-condition-is-false) {
// Do all your stuff inside this loop
}
return 0;
}
答案 5 :(得分:-2)
您可以使用goto
声明:
//Assume here is your starting point of your program
start: //we have declared goto statement for beginning
//Assume here is your ending point
goto start; //Here is that show go back to first position