我的while循环只执行一次

时间:2014-01-27 08:55:59

标签: c++ c loops while-loop continue

我在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语句。

3 个答案:

答案 0 :(得分:4)

while (0)意味着它将落在循环的底部。即使您有continue条件,也会重新评估

答案 1 :(得分:3)

当您在continue循环中执行do-while时,它会跳到底部的评估位置,在您的情况下总是为假。

答案 2 :(得分:1)

其他答案正在解释continue,但它会从您的评论中看出,就像您了解其运作方式一样。

  

如果i的值为3,那么我想重新启动do while循环,这将导致无限循环

代码按照您的描述运行 - 它正在i==3跳转到'while'条件。唯一的区别是,如果您想要无限循环,则需要while(1)而不是while(0)