把 printf("\n") 放在大括号 外面。 大括号 只 包括 printf("%d",a);
for后并不是都要加{}的,只有当for循环下的附属语句大于等于两句才需要加,当for循环下的附属语句只有一句加不加都行
加上括号表示两句printf语句都是for循环的语句,当for循环执行时两句printf都会执行输出数字后马上输出换行符
不加括号表示第一句printf语句是for循环的语句而第二句不是,当for循环执行时执行第一句printf输出足够的数字后(for循环结束)才输出换行。
第二种情况才能正确输出
1.没有人说过for后面必须加大括号
2.for、while、if、else这些语句,都只作用于它后面的一条语句
3.大括号是块标识符,可以将一段代码定义为一个块,块内定义的变量有自己的生命周期,而且可以和块外定义的变量同名
4.如果for后面跟大括号,那么是将整个块作为一条语句作用于for的,也就是说,for其实还是只跟一条语句,就是这个块,for其实就是反复在调用这个块,而块里面是一条或多条语句
5.你造成的错误不是因为加括号或者不加括号,而是错误的将printf("\n")一起包到了括号里面
6.你如果把括号去掉,那么由于for只作用于一条语句,printf("\n")自然也就不在for循环内了
7.只有你正确的理解了到底什么是块,以后才不会再纠结什么时候加括号什么时候不加括号的问题,遇到同名变量的题才好判断到底是编译错误还是一个正确的语法