C 增量运算符如何在do while循环中工作?

C 增量运算符如何在do while循环中工作?,c,do-while,post-increment,C,Do While,Post Increment,为什么printf语句执行三次? 一旦循环开始,i的值变为1,因此循环应该只运行2次,但它正在运行3次,如何运行?伪代码: In while loop In while loop In while loop 只有在printf之后,才在末尾检查条件。do while循环在末尾测试条件,因此示例中的循环将在i=1,2,3的情况下执行3次,原因是u正在使用后期增量 i = 1 => In while loop i = 2 => In while loop i = 3 => In

为什么printf语句执行三次? 一旦循环开始,i的值变为1,因此循环应该只运行2次,但它正在运行3次,如何运行?

伪代码:

In while loop
In while loop
In while loop

只有在printf之后,才在末尾检查条件。

do while循环在末尾测试条件,因此示例中的循环将在
i=1,2,3
的情况下执行3次,原因是u正在使用后期增量

i = 1
=> In while loop
i = 2
=> In while loop
i = 3
=> In while loop
exit from loop
{
int i=0;
做{
i++;//第一次-0,第二次-1,第三次-2
printf(“在while循环中\n”);
}而(i<3);
}
使用pre-increment或while代替do-while查看差异
  • 在第一次
    printf
    i之后,您第一次点击
    的时间是1。循环继续
  • 第二次点击
    ,而第二次点击
    printf
    i之后的
    是2。循环继续
  • 第三次点击
    ,而第三次点击
    printf
    i后的
    是3。循环现在结束

  • 您已经点击了三次
    printf

    循环以“i=0”开始,然后以“i++”进入循环并变为“i=1”,然后在“i”上检查条件,因此在最后一个循环中,当“i=3”时执行循环,然后在循环结束时检查“i您的条件(i<3)

    {
    
            int i = 0;
    
            do {
    
                i++; //first time -  0,second time - 1,third time - 2
    
                printf("In while loop\n");
    
            } while (i < 3);
    
        }
    
    1st pass:i=1=>“在while循环中”打印=>(i<3)已满足。增量i
    第二次通过:i=2=>“在while循环中”打印=>(i<3)已满足。增量i
    第三遍:i=3=>“在while循环中”打印=>(i<3)不正确。退出循环
    

    希望这有帮助!

    这可能有助于
    printf(“i==%d-In-while循环\n”,i);
    这是因为您使用的是
    do{…}while();
    这是循环中的一个post条件。因此,当您退出循环时,i等于3,代码将在i等于3的情况下运行。不要简单地询问fish,学习如何进行fish。除非您自己尝试,否则这些问题对您没有帮助。您在打印后进行检查。它第一次进入时,会增加i和prints语句。然后,它检查i是否小于3,因为它不是,它返回到do。第二次,它再次增加i,我现在是2,它打印语句。然后,它再次检查,i是否小于3?是的,因此它返回到do,增加i,再次打印语句。然后,它检查i是否小于3,但它不小于33.它存在循环。我相信这里的误解是while循环将在条件不再满足后立即结束(中断)它的执行。事实并非如此,正如许多人所说,定期检查条件(在本例中,在print语句之后)。这没有什么区别。在测试循环条件之前,
    i
    的值会更改。但是,
    do{…}while(++i<3)
    do{…}while(i++<3)
    会有区别。这就是为什么我建议“使用pre increment或while而不是do while来查看差异。”“如果问题代码中的增量后更改为增量前,则不会发生任何更改。您的答案是错误的。虽然do While循环在最后检查了条件,但这并不是此循环运行三次的原因。不管是一段时间还是一段时间,它都会执行三次。
    {
    
            int i = 0;
    
            do {
    
                i++; //first time -  0,second time - 1,third time - 2
    
                printf("In while loop\n");
    
            } while (i < 3);
    
        }
    
        1st pass :  i = 1  => "In while loop" printed => (i < 3) satisfied.increment i
        2nd pass :  i = 2  => "In while loop" printed => (i < 3) satisfied.increment i
        3rd pass :  i = 3  => "In while loop" printed => (i < 3) not true.exit from loop