C 增量运算符如何在do while循环中工作?
为什么printf语句执行三次? 一旦循环开始,i的值变为1,因此循环应该只运行2次,但它正在运行3次,如何运行?伪代码: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
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