c++ - 如何退出for循环内嵌套的if-else语句?(C/C++)

标签 c++ for-loop break goto nested-if

<分区>

我的程序中有一个for 循环,它是我程序的主循环,它应该实时运行。循环中也有一些 if-else 语句。我希望如果满足任何 if 条件,程序将退出 if-else 语句并重试 for 循环。

for(;;)
{
    if(condition_one)
    {
        do_one();
    }
    else if(condition_two)
    {
        do_two();
    }
    else 
    {
        do_three();
    }

    rest_of_program();
}

我试着这样写上面的代码:

for(;;)
{
    if(condition_one)
    {
        do_one();
        goto exitt; 
    }
    else if(condition_two)
    { 
        do_two();
        goto exitt;
    }
    else 
    {
        do_three(); 
    }
    exitt:
    rest_of_program();
}

但是好像有问题,我的程序不能运行!我做错什么了吗?或者有更好的主意吗?

最佳答案

我认为你把事情复杂化了。问题是这段代码:

for(;;)
{
    if(condition_one)
    {
        do_one();
        goto exitt; 
    }
    else if(condition_two)
    { 
        do_two();
        goto exitt;
    }
    else 
    {
        do_three(); 
    }
    exitt:
    rest_of_program();
}

相当于这个:

for(;;)
{
    if(condition_one)
    {
        do_one();
    }
    else if(condition_two)
    { 
        do_two();
    }
    else 
    {
        do_three(); 
    }
    rest_of_program();
}

if-else的各个 block 是互斥的,无论执行哪一个,之后都会有rest_of_program,然后循环继续。

关于c++ - 如何退出for循环内嵌套的if-else语句?(C/C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50356850/

相关文章:

c++ - 在 C++ (Windows) 上获取显卡名称

lisp - 在 ABCL 中,如何在不终止 LISP 的情况下摆脱失控的功能?

javascript - 在提交 redux 表单时循环 axios post 获取多个值

jquery - 如何跳出 jQuery 每个循环?

javascript - 如何在 TypeScript 中打破 ForEach 循环

c# - 将 _WTSClient 结构从 C++ 转换为 C#

c++ - 使用默认函数参数的优点

c++ - boost.asio 和文件 i/o 有什么关系?

c - for 循环 C 工作奇怪吗?

Windows 批处理脚本 - 如何过滤具有定义扩展名的文件