void main()
{
int i,x=1;
for(i=0;i<5;i++)
{
for(;x<5;x++)
{
printf("%d\n",x); //结果全为1
break;
}
}
}
void main()
{
int i,x=1;
for(i=0;i<5;i++)
{
while(x<5)
{
printf("%d\n",x);//结果是1,2,3,4,
x++;
break;
}
}
}
//我的理解是在for的嵌套循环中都必须要求x=1;(我的疑惑是我空出了表达式1,但没得到我的预期。)
// 在while被嵌套在其中,其过程不必再计算x=1;
您好,第一种情况每次没加一呢就跳出循环了,所以都为一,第二种情况加一了后,再跳出循环,所以为1234。
第一种情况for循环中再加一个x++;就为一二三四了
#include<stdio.h>
int main()
{
int i,x=1;
for(i=0;i<5;i++)
{
for(;x<5;x++)
{
printf("%d\n",x); //结果全为1
x++;
break;
}
}
}
并不是,而是因为你每次进入内部for的时候最后都运行了break,跳出到外部for,所以并没有进行x++这一步
for(;;){
}
这样来表示无限循环。不过,如果不是真正的无限循环,对于各个子句的省略,一般要么前面有值的初始化,要么循环体中有对某个标志值的处理和判断然后用break之类的进行退出循环,或者用return返回语句结束处理(它肯定可以退出当前循环)。
但这些不标准的写法中,尤其需要注意对标志量的处理是否正确,比如你第一个在break前面没有及时处理x的值进行变化(x++因为里面的break而没有真正执行)