我正在努力理解这个程序的输出。如果我试图“翻译”代码,我认为应该是这样的:
程序如何打印它4次,条件是如何在这里工作?
#include <stdio.h>
int main() {
int j = 0;
while(j++ < 3){
printf( "Ha ");
}
do{
j -= 2;
printf( "Hi ");
}
while(++j);
for(j = 1; j <= 3; j++){
printf( "Ho ");
}
printf("\n");
return 0;
}产出如下:
哈喜和河
发布于 2020-11-30 15:36:44
++j是前缀增量,即值将增加,然后将增加的值用于条件检查。
为了便于理解,我增加了一份书面声明:
do{
j -= 2;
printf( "Hi ");
printf("value of j before the while = %d\n", j);
}
while(++j);产出如下:
Hi value of j before the while = 2
Hi value of j before the while = 1
Hi value of j before the while = 0
Hi value of j before the while = -1所以,在
<
while (++j)中,j是2,++j是j迭代,3-2 = 1是++j,++j是2。H 115第三次迭代,2-2 = 0和d17是1。H 218H 119第四次迭代,d20和d210-这使得while和循环结束。H 223f 224发布于 2020-11-30 15:37:08
在第一个while循环之后
while(j++ < 3){
printf( "Ha ");
}J等于4。
因此,在do-while循环的第一次迭代中
do{
j -= 2;
printf( "Hi ");
}
while(++j);在第一次迭代之后,j等于3。在第二次迭代中,j等于1。第二次迭代之后,j等于2。在第三次迭代中,j等于0。在第三次迭代之后,j等于1,在第四次迭代中,j等于-1。所以在这个条件下的第四次迭代中
while(++j);J等于0,并将该控件传递给下一个循环。所以并发循环被执行了4次。
即后缀增量运算符的值是增量之前的操作数的值。而预增量运算符的值是其增量后的操作数的值.
发布于 2020-11-30 15:38:16
后第一环
j == 4
j -= 2 == 2
Hi
++j == 3
j -= 2 == 1
Hi
++j == 2
j -= 2 == 0
Hi
++j == 1
j -= 2 == -1
Hi
++j == 0 //end of th loophttps://stackoverflow.com/questions/65076397
复制相似问题