for循环的格式为for(表达式1;表达式2;表达式3),只要“表达式2”为真,for循环就一直进行。
你的for循环中的表达式2为 x>答燃=10,y<20 ,这是一个如巧逗号表达式,而逗号表清橡虚达式的值为最右边一个表达式的值。因此你的for一直循环到y>=20时才停止,出现你上面的结果也就不足为奇了。
如果你想要在x>=10且y<20的时候执行循环,可以把表达式2改为(x>=10)&&(y<20) ,这样就对了!
关键在于:
逗号表达式: expr0 = (expr1, expr2) 无论expr1的值是多少,腊模答 expr = expr2;
for(x=0, y=0; x>=10, y<20; x--, y++)
等价于
for( (x=0, y=0); (x>=10, y<20); (x--, y++) ) // 由上面知道x>=10 x的值不变 故不起到作用
等价于
for( (x=0, y=0); ( y<20); (x--, y++) )
另外 还要注意
for(x=0, y=0; x>=10, y<20; x--, y++)
{ //是不是少很多括弧啊 否则死循环 你哪来的结果啊
x/=2;
y+=2;
}//这样结果是:0 20
是不是你自己输入错??轮慧码亩??
首先你的判断条件用喊核了逗号 所以x>=10这模消个条件被忽略了
所以最后一次循环y=20 共20次循环郑码掘
而x的值:
30-14-6-2-0-(-1)-(-1)...
看出来了吗
你的循环条件很混铅源乱呀。\
for(y=0,y<20,y++)
y+=2
y=2+1=3+2=5+1=6+2=8+1=9+2=11+1=12+2=13+1=14+2=16+1=17+2=19+1=20
y=22
for(x=30,x>=10,x--)
x=x/2
30/2=15-1=14/闷激袜蚂激2=7-1=6