不理解C语言中的'{' 和 '}'

为什么两个程序就因为有无’{‘和 ’}‘而不同
程序①
#include <stdio.h>
main ()
{
int i,sum=0;
for (i=1;i<=100;i++)
{
sum+=i;
i++;
}
printf("%d",sum);
}

程序②
#include <stdio.h>
main ()
{
int i,sum=0;
for (i=1;i<=100;i++)
i++;
sum+=i;
printf("%d",sum);
}
上面程序①的’{‘ ’}‘代表什么意思?

这个楼主需要理解C语言中语句和复合语句的概念(后面的解释有点绕,楼主请细度)。

1、单语句:固定思议,只有一条语句的语句叫做单语句
2、多条语句:固定思议,不止一条语句的语句叫做多条语句
3、复合语句:多条语句使用{}括起来组合成一个整体就叫复合语句。并且在程序中应把复合语句看成是单条语句,而不是多条语句。

再来看for循环语句的语法,循环体是一条单语句
for (初值表达式; 循环条件表达式; 更新表达式)
循环语句(注意:是单语句)

因此对于程序①来说

for (i=1;i<=100;i++)
{
sum+=i;
i++; //这两条语句组合成了一个复合语句,被看做一条单语句,都是for的循环体,每次循环都会执行
}

但是对于程序②来说
for (i=1;i<=100;i++)
i++; //单语句,只有这一条语句才是for的循环体

sum+=i; //这个是在for循环体之外了,不属于for循环体,只会执行一遍
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-27
程序1中的for语句下的{}中的语句表示的是for循环执行的复合语句,for循环每次都会执行(每次循环执行sum+=i;i++;);而程序2中没有{},表示for循环只执行一句语句(i++;)。
第2个回答  2014-12-27
for (a;b;c)
stmt;

等价于

for (a;b;c)
{
stmt;
}



在这里,

 for (i=1;i<=100;i++)
 i++;
 sum+=i;

等价于

 for (i=1;i<=100;i++)
 {
     i++;
 }
 sum+=i;

也就是说,循环体是 i++ ,循环结束后才执行 sum+=i;

追问

是不是说 整个循环结束了,的才执行sum+=i;

追答

相似回答