我有以下 C++ 程序;
#include <iostream>
int main() {
int i=1, j=1, k=1, z=0;
for (; i <= 10; i++)
while(j <= 10) {
j++;
do {
k++;
z++;
} while(k <= 10);
}
std::cout << z << " ";
}
Run Code Online (Sandbox Code Playgroud)
运行时输出为 19,我无法理解为什么会这样。
由于之前的 while(j<=10),我预计返回值为 10。我错过了什么?
do while 循环是 while 循环的子语句
while(j<=10) {
j++;
do {
k++;
z++;
} while(k<=10);
Run Code Online (Sandbox Code Playgroud)
由于while循环的条件而执行了10次
while(j<=10) {
Run Code Online (Sandbox Code Playgroud)
在内部 do-while 循环内的第一次循环迭代中,变量z变为等于10。另一方面,由于 do-while 循环的条件,该变量k将等于11
do {
k++;
z++;
} while(k<=10);
Run Code Online (Sandbox Code Playgroud)
在外部 while 循环的下一次9迭代中,内部 do while 循环将仅迭代一次,因为在 while 循环的第一次迭代之后,变量k将大于10。
因此,在 while 循环的第一次迭代之后,变量z将等于10,并且在 while 循环的下一次9迭代中,变量z每次只会增加一次。
也就是说,do-while 循环始终至少有一次迭代,因为在执行其子语句后会检查其条件。