【问题标题】:C; If I put a break in a for loop inside a while loopC;如果我在 while 循环内的 for 循环中放置一个 break
【发布时间】: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;
                            }
                    }
            }
}

【问题讨论】:

  • 也许您需要在某处将愚蠢的标志设置为“真”?

标签: c for-loop while-loop boolean 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");)。 然后您将看到该语句的执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-10
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        • 2014-03-22
        • 2015-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多