for循环之省略{}
#include <iostream>
using namespace std;
int main()
{
for (int i = 1;i <= 10;i++)
{
for (int j = 1;j <= i;j++)
cout << "M"; //注意此处并未使用{},效果是一样的
cout << endl;
}
cin.get();
return 0;
}
运行结果:
M
MM
MMM
MMMM
MMMMM
MMMMMM
MMMMMMM
MMMMMMMM
MMMMMMMMM
MMMMMMMMMM
又一个例子:
#include <iostream> using namespace std; int main() { for (int i = 1;i <= 10;i++) { for (int j = 1;j <= i-1;j++) //只要满足就会一直执行下去,显示空格 cout << " "; for (int k = 1;k < 21 - 2 * i;k++) cout << "M"; cout << endl; } cin.get(); return 0; }
结果如下:
1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {
6 for (int i = 1;i <= 10;i++)
7 {
8 for (int j = 1;j <= 10-i;j++)
9 cout << " ";
10 for (char k = 'A';k < 'A' +2 * i-1;k++)
11 cout << k;
12 cout << endl;
13 }
14
15 cin.get();
16 return 0;
17 }
结论:在必要时候省略{},达到的效果 是一样的,看起来更加简洁
******************************************************************************************2017-07-10
上面的内容说了那么多,图文并茂,然而总结起来一句话:c语言的语句块里,如果里面只有一条语句,可以不打花括号。
但是,但是,这些都属于次要语言特性!!要掌握关键语言特性,参见王垠如何掌握所有的程序语言
为了达到融会贯通,一通百通的效果,初学准应该专注于语言里面的关键特性,而不是被次要的特性分心。
何为关键特性?就是所有语言里面都具有的普遍性的东西。如变量,函数,递归,类型等
-
变量定义
-
算术运算
-
for 循环语句,while 循环语句
-
函数定义,函数调用
-
递归
-
静态类型系统
-
类型推导
-
lambda 函数
-
面向对象
-
垃圾回收
-
指针算术
-
goto 语句。。。。。。。
最高境界:
自己动手实现语言特性。使用Scheme
在基本学会了各种语言特性,能用它们来写代码之后,下一步的进阶就是去实现它们。只有实现了各种语言特性,你才能完全地拥有它们,成为它们的主人。否则你就只是它们的使用者,你会被语言的设计者牵着鼻子走。