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

 我来答
大野瘦子
高粉答主

2019-10-23 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:33.8万
展开全部

加分号,表示这个循环是空语句,除了执行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语句的执行。

百度网友e133476
2019-06-07 · TA获得超过1078个赞
知道答主
回答量:70
采纳率:0%
帮助的人:9496
展开全部

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

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

1、单语句循环

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

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

2、代码体循环

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

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

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

扩展资料

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

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翲燚
2017-08-05 · 知道合伙人软件行家
翲燚
知道合伙人软件行家
采纳数:436 获赞数:3030

向TA提问 私信TA
展开全部

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
展开全部
分号代表语句结束假设你有一个数组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语言中,分号代表语句结束
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
limmea
2017-07-25 · TA获得超过229个赞
知道小有建树答主
回答量:150
采纳率:100%
帮助的人:74.6万
展开全部
for后面是个循环体 你可以理解为一个语句块
for{}
平时是由一些语句组成的 如果直接加分号的话 说明不执行操作(空操作) 只做单纯循环 没有什么意义 一般用在延迟函数里
但这样的写法是不推荐的 因为很占CPU 你可以试一下用三重循环 然后循环体只写一个分号 执行你会发现电脑内存一下子飙很高 最简单的电脑病毒就是这样做的 用很高次的循环 做无意义的操作 让你的电脑运行很慢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式