在C语言中,for语句的后面加分号和不加分号有何不同,该分号有什么作用?
加分号,表示这个循环是空语句,除了执行for()括号里的,什么都不干,然后就执行下一行。
不加分号,那for循环后面的printf语句就是for循环的一部分,跟着for一起执行,但前提是for循环里的条件要满足。
分号代表语句结束。
例如:
for(i=0;i<100;i++);
就等于:
for(i=0;i<100;i++)
{
;
}
扩展资料:
注意事项
格式:
for(表达式1;表达式2;表达式3){
//若干语句(循环体)
}
执行规则:
计算表达式1,完成必要的初始化工作;
判断表达式2的值,若表达式2的值为true,则进行3,否则进行4;
执行循环体,然后计算表达式3,以便改变循环条件,进行2;
结束for语句的执行。
C语言中分号作为语句结束的标志是比不可少的,for语句后面的代码从整体上分析,此时每一条语句必定带分号,缺乏分号将导致语法错误。而如果for语句后面的代码构成代码体,则不需要再代码体结束时加上分号。
for语句有两种用法,一种是跟单语句,一种是跟代码体。
1、单语句循环
以上5个for循环均实现了5条语句的5次循环。由于for循环均使用单语句循环,循环直接相互独立,没有嵌套结构。
但对于后3个循环,使用了逗号表达式作为一条语句,C语言的语句是必须以分号结束的且此处仅使用逗号表达式构成语句,并没有构成代码体,故此处仍需要使用分号。
2、代码体循环
代码体循环实现了多条语句循环,代码体可以是单语句、多语句和循环结构等。代码体循环结构将多条语句看成一个整体进行循环,每一条语句均需要分号进行结尾。
而代码体以花括号作为边界,并不是语句,故此处不需要再使用分号。
综上for语句后根据循环结构内容选择是否添加分号。如果为语句,必须以分号结尾;如果是由完整语句构成的代码体,则必须使用花括号,此时可以不添加分号结尾。
扩展资料
需要注意的是,由于C语言的语句均以分号结尾且C语言存在空语句,故使用for语句时需要避免再完成for(;;)的结构后直接使用分号再编写循环代码的情况(如下图所示)——此时的循环结构为空语句。
因此使用C语言需要养成良好的编程习惯,合理使用代码体并规划程序结构以提高开发效率。
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次。
2013-06-04
for{}
平时是由一些语句组成的 如果直接加分号的话 说明不执行操作(空操作) 只做单纯循环 没有什么意义 一般用在延迟函数里
但这样的写法是不推荐的 因为很占CPU 你可以试一下用三重循环 然后循环体只写一个分号 执行你会发现电脑内存一下子飙很高 最简单的电脑病毒就是这样做的 用很高次的循环 做无意义的操作 让你的电脑运行很慢