已关闭。此问题需要details or clarity。它目前不接受回答。
**希望改进此问题?**通过editing this post添加详细信息并阐明问题。
// Online C++ compiler to run C++ program online
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i<=15;i+=2){
cout<<i<<" ";
if (0){
continue;
}
i++;
}
}
输出- 0 3 5 7 9 11 13 15
我收到0 3 6 9 12 15
如何继续工作。它是只跳过if块还是整个for循环?为什麽我不能用i++?
2条答案
按热度按时间yeotifhr1#
在你的代码中,这里:
字符串
整数文字
0
根据上下文转换为bool
,结果始终为false
(非零整数将产生true
)。if
语句可以在不改变行为的情况下被删除,因为continue
从未实际执行过:型
如果可能的话,要么在while循环的体中增加计数器,要么通过for循环的迭代表达式,但不能两者兼而有之。这更简单,并实现与您的代码相同的功能:
型
另一方面,要获得此输出:
型
你可以在每次迭代中增加
2
,但只能在第一次迭代中,当i==0
增加一次时:型
如何继续工作。它是只跳过if块还是整个for循环?
continue
跳过封闭循环的剩余部分。详情请参阅https://en.cppreference.com/w/cpp/language/continue。为什麽我不能用i++?
在您的代码中,
continue
对下面的i++
没有影响,因为if(0)
是死分支。如果你想使用
continue
,你可以把上面的逻辑反过来,在每次迭代中做额外的增量,但在此之前,当i
不是0
时,你可以使用continue
:型
条件可以写成
if (i)
(参见上文,0
到bool
的上下文转换产生false
)。也许这就是你的出发点,你没有删除!= 0
,而是从条件中删除了i !=
。eqoofvh92#
要理解
for
循环中发生了什么,需要记住i
的哪个值进入循环。在C++中,它是当前值,在本例中从i = 0
开始。代码永远不会进入
if (0)
块,因为0
被视为false
。因此,循环每次求值时将i递增1。因此,在第一轮求值中,当它进入循环体时,它以i = 1
的形式退出。现在循环增量规则将2加到i
上,使其成为您在输入中看到的i = 3
。接下来的步骤都遵循相同的模式。在循环体中添加1,然后在下一个“入口”处添加2,使
i
成为6等。我建议你用一张纸来遵循这个解释,并自己理解剩下的输出。