1.来看这么一段代码
代码如下:
#include<stdio.h>
int main()
{
for( ; ; )
{
printf("hello\n");
}
return 0;
}
这里省略了for循环的初始化,判断以及调整 运行结果是什么呢?
运行发现是死循环,一直打印输出hello 这里就要注意:如果for循环的判断部分被省略,那判断的条件就是:恒为正,也就是一直执行下去。
2.
#include<stdio.h>
int main()
{
int i
=0;
int j
=0;
for( ;i
<10;i
++ )
{
for( ;j
<10;j
++)
{
printf("hello\n");
}
}
return 0;
}
这里省略了初始化
如果不省略则输出100个hello这毋庸置疑 如果省略了运行发现输出的却是10个hello,这又是为什么? 具体执行过程:
1.外层for循环进来执行内层for循环j从0一直到9,输出10条hello
2.当j=10时结束
3.再从外层判断进入内层循环,由于j在for循环外定义的,并未销毁,所以j仍然为10,内层循环一直不满足条件,因此再次进来时,并不会执行内层循环语句。最终只有10条hello(建议不要随便省略,可能会引起代码出现意想不到的错误!)