为什么执行break语句但不执行continue语句?
vector<int>val {2,3,4,-1,5,6,-1,56,234,-99,26,35,12,3,4};
for (auto name: val) {
cout << name << endl;
if (name == -1)
continue;
else if (name == -99)
break;
}
为什么它不跳过代码中上面指出的-1(不执行继续语句),却同时执行break函数。 它会在控制台上显示以下数字:
2
3
4
-1
5
6
-1
56
234
-99
答案 0 :(得分:3)
std :: cout命令的位置错误,如果仅所有条件均错误,则必须显示。如果满足条件name == -1
,则continue
关键字会指示在增加循环迭代器后立即返回到for循环,因此在这种情况下将不会调用cout命令行。
for (auto name : val) {
if (name == -1)
continue;
else if (name == -99)
break;
cout << name << endl;
}
答案 1 :(得分:0)
coninue
语句未执行,因为它是for
循环中的最后一条语句,并且没有任何意义,因此优化程序将其删除,从而不会生成多余的jmp
(或相关)操作。
答案 2 :(得分:-1)
在这种情况下,只有在通过IF ELSE条件后,才应打印这些值。您甚至在检查它们是-1还是-99之前就在打印它们,因此从技术上讲,它将打印该矢量中的所有内容,直到找到-99。
答案 3 :(得分:-2)
第一次执行将逐步进行。
for
循环一个接一个地迭代,并将每个元素与给定条件进行比较。
如果name == -1
为真,则反复比较continue
否则,如果name == -99
,则break
将采取行动。然后,您必须打印不满意的值。
因此您的代码将按以下方式工作。
for (auto name : val) {
if (name == -1)
continue;
else if (name == -99)
break;
cout << name << endl;
}