在C语言中,for语句的后面加分号和不加分号有何不同?

如题所述

for语句有两种用法,一种是跟单个语句,一种是跟代码体。
在跟单个语句时,由于在C语言语句默认是以分号结尾的,程序会将for (;;)之后直到第一个分号的代码视为循环体来执行,例如下面三种情况:
for (int i=0; i<10; i++) foo1();for (int i=0; i<10; i++) foo1();for (int i=0; i<10; i++) foo1();上面三种写法,都是调用foo1()函数10次。在下面一种情况里,程序只会将foo1()函数循环调用10次,而不会将foo2()列入循环中,因为分号for语句在foo2()之前就已经结束了:
for (int i=0; i<10; i++) foo1(); foo2();特别要提的是下面的两种写法,这两种写法的for语句的循环体都为空,程序都不会将foo2()列入循环,因此foo2()只会执行一次。这也是初学者常见的书写错误。
for (int i=0; i<10; i++) ; foo2();for (int i=0; i<10; i++) ; foo2();
除了跟单个语句外,for语句还可以跟 { } 圈起来的代码体,如下面的例子:
for (int i=0; i<10; i++) { foo1(); foo2();}在这种情况下,for语句可以不以分号结尾,程序会将代码体内的所有语句循环10次。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-09
for(i = 0;i<5;<i++); 1
for(i = 0;i<5;<i++)
i++; 2
你所说的是for()后面那个分号吗?如果是的话,他后面的分号是一定要的,但是如果分号直接写在括号后面却没有其他语句的话,证明这个循环是没有可执行语句的,如上面1.
第二个例子分号前面有个语句,就是每当括号里的条件成立时,他就会执行一次。
第2个回答  2018-03-09
分号代表语句结束假设你有一个数组int a[5];那么你可以这样给数组赋值for(int i = 0;i<5;i++) a[i]=i;这个是没加分号的,那么a[0]=0,a[1]=1....a[4]=4;for(int i = 0;i<5;i++);这样加了分号,就代表结束了,相当于循环只执行了i,然后就退出循环了 a[i]=i;//这样相当于只有a[4]=4; C语言中,分号代表语句结束
第3个回答  2018-03-09
推荐回答中最后那个循环出来是i=5,而不是4
相似回答