对于for(条件一;条件二;条件三)想必大家手到擒来比如
int main()
{
int x,y;
for(x=30,y=0;x>=10;x--,y++){
x/=2,y+=2;
printf("x=%d,y=%dn",x,y);
}
printf("x=%d,y=%dn",x,y);
return 0;
}
其循环过程和结果如下
那么对于for(条件一;条件二,条件三;条件四)呢?
将
for(x=30,y=0;x>=10;x--,y++)
改成
for(x=30,y=0;x>=10,y<30;x--,y++)
#include#include int main() { int x,y; for(x=30,y=0;x>=10,y<30;x--,y++){ x/=2,y+=2; printf("x=%d,y=%dn",x,y); } printf("x=%d,y=%dn",x,y); return 0; }
可能大家会想,这不是非常简单吗?不就多出来了一个终止准则吗?
结果不应该还和上面是一样的吗?
x=15,y=2 x=7,y=5 x=6,y=6
但真的是这样吗?
让我们运行一下
啊?和我们想的不一样啊!怎么会是这样?
对啊,怎么会是这样呢?这其实是C语言中的一个坑,不知道你中招了没有呢?(反正我当时中招了)
接下来让我们看看下面两串代码和结果,我们就可以大概了解为什么了
int main()
{
int x;
for(x=0;0,1;x++){
if (x>=5)
break;
printf("%d ",x);
}
return 0;
}
#include#include int main() { int x; for(x=0;1,0;x++){ printf("%d ",x); } if(x==0) printf("循环未进行"); return 0; }
我们可以从上面看到当终止准则是 0,1 时,循环正常进行,而终止准则是1,0,循环还没开始就结束了,所以我们可以判断得出对于for(条件一;条件二,条件三;条件四)其实和for(条件一;条件三;条件四)是等价的,也就是说条件二是没有用的
所以对于for(x=30,y=0;x>=10,y<30;x--,y++),其实和for(x=30,y=0;y<30;x--,y++)是等价的 你明白了吗?


