【问题标题】:break statement won't exit loopbreak 语句不会退出循环
【发布时间】:2014-10-29 06:45:32
【问题描述】:

使用以下代码,我由于某种原因无法退出提供的 for 循环:

for(int i = 0; i < sizeof(boolForCharIsDigi)/sizeof(boolForCharIsDigi[0]); i++){
                if(boolForCharIsDigi[i] == false){
                    hasPassed = false;
                    std::cin >> turnsDefined;
                    std::cout << "You may only use numbers to define the amount of turns. No decimals either." << std::endl << std::endl;
                    break;
                }else if(boolForCharIsDigi[i] == true){
                    hasPassed = true;
                }
}

Vars:boolForCharIsDigi 是包含 false 和 true 值的 bool 数组。 turnsDefined 是一个简单的 std::stringhasPassed 是另一个正常的布尔值,真/假。

正是我想要做的: 使用 break 语句,我想退出 for 循环。 (很简单)。

【问题讨论】:

  • sizeof(boolForCharIsDigi)sizeof(boolForCharIsDigi[0]) 的值是多少??
  • 编译时包含所有警告和调试信息 (g++ -Wall -Wextra -g)。然后使用调试器 (gdb)!
  • 使用 hasPassed 和 for 循环的当前条件。将其初始化为真。你不需要休息。
  • @gldraphael 计算,它返回用户输入字符数组的值(长度)。它基本上为 char 数组中的每个元素创建一个 bool。
  • @Code 因为在我看来它工作得很好:ideone.com/281Jay

标签: c++ loops break


【解决方案1】:

我做错了什么:我的break 语句只退出了一个嵌套循环。外部循环只是重新启动了内部循环。所以我所做的是添加一个 bool 并让外循环检查内循环是否将其设置为 true 以便它退出。

【讨论】: