在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语句的执行。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-07

C语言中分号作为语句结束的标志是比不可少的,for语句后面的代码从整体上分析,此时每一条语句必定带分号,缺乏分号将导致语法错误。而如果for语句后面的代码构成代码体,则不需要再代码体结束时加上分号。

for语句有两种用法,一种是跟单语句,一种是跟代码体。

1、单语句循环

以上5个for循环均实现了5条语句的5次循环。由于for循环均使用单语句循环,循环直接相互独立,没有嵌套结构。

但对于后3个循环,使用了逗号表达式作为一条语句,C语言的语句是必须以分号结束的且此处仅使用逗号表达式构成语句,并没有构成代码体,故此处仍需要使用分号。

2、代码体循环

代码体循环实现了多条语句循环,代码体可以是单语句、多语句和循环结构等。代码体循环结构将多条语句看成一个整体进行循环,每一条语句均需要分号进行结尾。

而代码体以花括号作为边界,并不是语句,故此处不需要再使用分号。

综上for语句后根据循环结构内容选择是否添加分号。如果为语句,必须以分号结尾;如果是由完整语句构成的代码体,则必须使用花括号,此时可以不添加分号结尾。

扩展资料

需要注意的是,由于C语言的语句均以分号结尾且C语言存在空语句,故使用for语句时需要避免再完成for(;;)的结构后直接使用分号再编写循环代码的情况(如下图所示)——此时的循环结构为空语句。

因此使用C语言需要养成良好的编程习惯,合理使用代码体并规划程序结构以提高开发效率。

本回答被网友采纳
第2个回答  2017-08-05

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次。

第3个回答  2013-06-04
分号代表语句结束假设你有一个数组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语言中,分号代表语句结束本回答被网友采纳
第4个回答  2017-07-25
for后面是个循环体 你可以理解为一个语句块
for{}
平时是由一些语句组成的 如果直接加分号的话 说明不执行操作(空操作) 只做单纯循环 没有什么意义 一般用在延迟函数里
但这样的写法是不推荐的 因为很占CPU 你可以试一下用三重循环 然后循环体只写一个分号 执行你会发现电脑内存一下子飙很高 最简单的电脑病毒就是这样做的 用很高次的循环 做无意义的操作 让你的电脑运行很慢

在C语言中,for语句的后面加分号和不加分号有何不同,该分号有什么作用...
加分号,表示这个循环是空语句,除了执行for()括号里的,什么都不干,然后就执行下一行。不加分号,那for循环后面的printf语句就是for循环的一部分,跟着for一起执行,但前提是for循环里的条件要满足。分号代表语句结束。例如:for(i=0;i<100;i++);就等于:for(i=0;i<100;i++){ ;} ...

for语句后面为什么要加分号啊?
for语句后加分号就是表示执行for中的语句,不执行其他,也就是不带循环体语句。for后面跟的是循环体。如果不需要有循环体,也就是for括号里面的三句就可以完成所有功能那么就加个分号,表示循环体为空。比如 :求字符串s的长度for(len=0;s[len]; len++);这个, 单独for里面的三句就完成了所有功...

C语言for括号后加分号什么意思
for语句后加分号就是表示执行for中的语句,不执行其他,也就是不带循环体语句 int i, j=0;for(i=0; i<5; i++) \/\/ 带循环体的for循环{ \/\/ {}括起来的就是循环体语句 j++;}for(i=10; i>0; i--); \/\/ 不带循环体的for循环\/\/ 执行过程如下如下(也就是for后带分号的意...

在C语言中的for语句中加分号与不加分号有啥区别
分号代表语句结束假设你有一个数组int a[5];那么你可以这样给数组赋值for(int i = 0;i

请问c语言中for循环后面加上分号和不加分号有什么区别吗?
加上分号,for循环就变成了空循环,一直循环,不输出任何东西,直到不满足循环条件,退出循环,才执行下一条语句。

C语言for语句加{}和不加{}有什么区别?
你好,很高兴为你答疑。为了程序的易读,一般是提倡加括号的,那样for函数执行的主体清晰明了。不加括号的时候,默认该for函数执行的是紧跟其后的1函数或语句。比如:for(;;){ for(;;){ } } 这里面外层的for不佳括号也可以的。但是如下:for(;;){ for(;;){ } printf("");} 这样的话外层...

for循环后加“;”和不加“;”的区别是什么???
加分号则for后面的大括号执行一次,而且与for里面的条件无关 风雨aaa_8a | 发布于2011-03-20 举报| 评论 0 1 for();:表示这个for循环什么都不做,即for循环到分号处结束,不加分号,执行for下面大括号里面的值 qi爱珍 | 发布于2011-03-18 举报| 评论 3 0 有一坨,就一定要加,要不然执行的只是最...

c++中for循环语句句末加分号与不加的区别
?循环语句后面直接加分号,就是空语句。或者用{ } 括起来的,是语句组,可以不用加 for( ; ; ) a++ ; \/\/这是个循环 for( ; ; ) ; \/\/这也是循环,只不过循环里什么都不做 for( ; ; ) { a++;b++;} \/\/这也是循环,语句都放在 括号里面了 ...

for()语句后面加分号与不加分号结果为什么不同
C\/C++支持空语句的 for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP);相当于for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP) { };而for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP) printf("%3d %6.1f\\n", fahr, (5.0 \/ 9.0)*(fahr ...

matlab中的for语句后加分号,为什么执行仍然没有错误?
没有错误,for函数用end来结束,而不是用分号结束,跟c语言中不同。一般情况下,加分号不显示结果,不加分号,则立即显示结果,如”a=1“和“a=1;”的显示结果是有区别的,前者运行后,在command窗口立即显示结果,而后者不显示,你所给的例子有些特殊,由于“for i=1:3”没有要显示的东西,...

相似回答