#include<stdio.h>
main()
{ int x,y;
for(x=30,y=0;x>=10,y<10;x--,y++)
x/=2,y+=2;
printf("x=%d,y=%d\n",x,y);
}
问:运行结果为什么
答案是x=0,y=12
我算出来是x=1,y=12 为什么呀为什么
过程应该是这样的:
int x,y;
for(x=30,y=0;x>=10,y<10;x--,y++) //这个判断条件需要2个都不满足才跳出循环
{
x/=2,y+=2;
}
printf("x=%d,y=%d\n",x,y);
//第一次循环 x的值为30
//30/2=15 y=2 然后x自减,y自加 x=14,y=3
//第二次循环
//14/2=7 y=3+2=5 x自减 y自加 x=6,y=6
//第三次循环
// x=6/2=3 y+2=8 x自减 y自加 x=2,y=9
//第四次循环
// x=2/2=1 y+2=11 x自减 y自加 x=0,y=12
首先x>=10,y<10作为循环结束判断条件,实际有效的只有y<10,x>=10这个条件是不起作用的
其次当x=1结束循环时,由于for的原因,x--还需要被执行一次的