为什么此代码会出现运行时错误?

时间:2020-07-05 05:50:55

标签: c++

如果我在if循环中注释i++,则while循环将运行并至少打印0,1,2,3。但是,相反,它输出C ++ Shell中超出的运行时。我不明白为什么?

#include <iostream>
using namespace std;
    
int main() {
   int i = 0;
   while (i < 10) {
     if (i == 4) {
     //   i++;
       continue;
     }
     cout << i << "\n";
     i++;
   } 
   return 0;
}

2 个答案:

答案 0 :(得分:1)

continue语句会导致跳转,就像跳转到循环主体的末尾一样,跳过i++会导致无限循环,因为我停留在4岁。

答案 1 :(得分:0)

使用break而不是continue,则机器将了解需要在i == 4处退出循环。

执行以下操作:

#include <iostream>

int main(void) {
    int i = 0;

    while (i < 10) {
        if (i == 4) break;

        std::cout << i << std::endl;
        i++;
    }
    
    return 0;
}

另外,请注意,由于我们在遇到i == 4时设置了break语句,因此While循环直到10才会迭代。