我在c。
中制作了示例代码do
{
switch(i)
{
case 1:
{
cout<< "1\n";
break;
}
case 2:
{
cout<< "1\n";
break;
}
case 3:
{
continue;
}
}
}while (0);
这里的代码中,如果i的值为3,那么我想重新启动do while循环,这将导致无限循环。但不幸的是循环没有再次执行。这是什么原因。? 我在Visual Studio中检查了相同代码的汇编代码,发现在switch -case中的continue语句的汇编中没有JMP语句。
答案 0 :(得分:4)
while (0)
意味着它将落在循环的底部。即使您有continue
条件,也会重新评估
答案 1 :(得分:3)
当您在continue
循环中执行do-while
时,它会跳到底部的评估位置,在您的情况下总是为假。
答案 2 :(得分:1)
其他答案正在解释continue
,但它会从您的评论中看出,就像您了解其运作方式一样。
如果i的值为3,那么我想重新启动do while循环,这将导致无限循环
代码按照您的描述运行 - 它正在i==3
跳转到'while'条件。唯一的区别是,如果您想要无限循环,则需要while(1)
而不是while(0)
。