C;如果我在 while 循环内的 for 循环中放置一个 break

Posted

技术标签:

【中文标题】C;如果我在 while 循环内的 for 循环中放置一个 break【英文标题】:C; If I put a break in a for loop inside a while loop 【发布时间】:2012-10-14 06:35:50 【问题描述】:

我在 C 中做这个,而不是 C++。无论如何,如果我在 for 循环中放置一个 break 语句,它会仅停止 for 循环还是同时停止 for 和 while 循环?例如,这是我的代码中带有 while 和 for 的部分。我正在做的是让用户输入一个 24 小时的时间,我正在检查这个循环中的分钟数(希望是正确的)。我关心的是break语句是只结束for循环还是结束for和while,因为我只希望for循环结束。

boolean check = false;
while (!check)
    int i;
            for (i = 1; i < 24; i++)
            
                    int hour = i*100;
                    /* if the time has less hours than the hour counter*/
                    if ((hour - timeOfDay) < 100)
                    
                    /*declare an illegal time when the number of minutes remaining*/
                    /*is greater than 59*/
                            if ((hour - timeOfDay) > 59)
                              
                                    check = false;
                                    break;
                            
                    
            

【问题讨论】:

也许您需要在某处将愚蠢的标志设置为“真”? 【参考方案1】:

它只会破坏内部 for 循环,而不会破坏外部 while 循环。 实际上,您可以在发布问题之前使用简约的代码示例进行测试。我想这将花费与构建 Q 相同的时间。

【讨论】:

【参考方案2】:

如果你把它放在for 循环中,它只会停止/中断for 循环。

【讨论】:

在这种情况下为真。如果for 循环不是最内层循环,则不正确。 是的,我只关注这个案例。【参考方案3】:

来自 C 标准:(第 6.8.6.3 节)

约束

break 语句只能出现在或作为 switch 主体或循环主体。

语义

break 语句终止执行最小的封闭开关或迭代 声明。

【讨论】:

【参考方案4】:

break 执行时,程序停止执行它下面的其他语句,并刚刚离开loop 并从break 所在的循环体之后的语句开始。 在这种情况下,它只会从内部for 循环中出来。 如果你想做一些演示,只需在 for 循环的右大括号 之后放置一条语句 (eg printf("outside inner loop");)。 然后您将看到该语句的执行。

【讨论】:

以上是关于C;如果我在 while 循环内的 for 循环中放置一个 break的主要内容,如果未能解决你的问题,请参考以下文章

C----循环

while循环内的变量范围

Shell脚本for循环逐行原样输出

python循环

python基础:while循环,for循环

在 for 中插入一个 while 循环。认为这是一个脑筋急转弯[关闭]