各位大神,请教一下下面问题

为什么第一个每次循环都打印换行,而第二个在一个循环结束后才打印一次换行,它们都是被大括号括起来的呀

(1)  for(i=1;i<=2;i++)
for(j=0;j<4;j++)
 {printf("%d",j+i);
printf("\n");
     }
(2) for(i=1;i<=2;i++)
{for(j=0;j<4;j++)
  printf("%d",j+i);
printf("\n");
}

大括号的作用就是把括起来的语句看成是一个整体,你可以把它当成一条语句。

如果if else while for这些判断或循环语句后面的执行语句只有一条,就可以省略大括号,因此这两段代码等价于:

(1)  for(i=1;i<=2;i++){
for(j=0;j<4;j++)
{printf("%d",j+i);
printf("\n");
}

}
(2) for(i=1;i<=2;i++)
{for(j=0;j<4;j++){
  printf("%d",j+i);

}
printf("\n");
}

这就设计到一个循环嵌套的问题:

第一个它括的是内部的循环,所以它的内部循环循环一次就换行一次;

而第二个括的是整个大循环,所以它的循环执行完了才会换行!

谢谢大家!