通过学习c语言,想必大家都了解了for循环语句:for(条件一;条件二;条件三),但我们今天来讲讲for语句的一个坑for(条件一;条件二,条件三;条件四)
对于for(条件一;条件二;条件三)想必大家手到擒来比如
int main()
{
int x,y;
for(x=30,y=0;x>=10;x--,y++){
x/=2,y+=2;
printf("x=%d,y=%d\n",x,y);
}
printf("x=%d,y=%d\n",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 <stdio.h>
#include <stdlib.h>
int main()
{
int x,y;
for(x=30,y=0;x>=10,y<30;x--,y++){
x/=2,y+=2;
printf("x=%d,y=%d\n",x,y);
}
printf("x=%d,y=%d\n",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 <stdio.h>
#include <stdlib.h>
int main()
{
int x;
for(x=0;1,0;x++){
printf("%d ",x);
}
if(x==0)
printf("循环未进行");
return 0;
}