首先,出于代码的书写规范考虑,应该为所有的for语句加上大括号!
实际应用中,有的人为了简化(其实也没省多少时间...),在循环体只有一条语句的时候,省略了大括号
,例 for(int i=0;i<5 ;i++) a=a+i;
但,如果要循环的内容(循环体)超过一条语句,则必须加大括号,例:
for(int i=0;i<=5;i++)
{
a+=i;
b=a+b; //如果不加大括号,这条语句不会被循环执行.
}
for循环语句的循环体如果只有一个语句,则大括号可以省略;如果循环体由多个语句组成,就必须要使用大括号(否则将只把第一个语句作为循环体,而后面的语句则作为“循环体以外”的语句处理)。
for循环语句如果循环体内只有一条执行语句则不用加大括号,如果执行语句为多条语句则必须用大括号括起来,以表示这一部分的执行语句都在循环体内,循环条件满足时要被执行的语句;如:
(1)for(i=0;i<5;i++)
s+=m[i];这个循环体内就一条执行语句 s+=m[i];故不用大括号;
(2)
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{a[i][j]=m;
m++;
if(j<=i)
printf("%3d",a[i][j]);
}这个例题双重for循环,第一重循环for(i=0;i<5;i++)后没有大括号,因为他的循环体内只有一条执行语句就是内循环语句,它是一个复合语句:
for(j=0;j<5;j++)
{a[i][j]=m;
m++;
if(j<=i)
printf("%3d",a[i][j]);
}而内循环语句后有大括号,是因为内循环体内包括a[i][j]=m;和
m++;和if(j<=i)
printf("%3d",a[i][j]);三条执行语句,想把他们都包括到循环体内就必须用大括号括起来,作为一个复合语句出现。
for语句还有空循环模式,就是没有执行语句,如:
for(i=0;str[i]!='\0';i++);此句后就有分号,表示为空循环,没有执行语句,它的功能就是为了得到i的值。
以上分析希望能够帮到您。