第 1 课:C++ 程序到底在干什么?
先看刚才这段代码:
#include <iostream>
int main()
{
int a = 3;
int b = 5;
int c = a + b;
std::cout << c << std::endl;
return 0;
}
你暂时不用背它。
这一课我们只搞清楚三件事:
程序从哪里开始、变量是什么、怎么把结果显示出来。
1. 先用最直觉的方式理解程序
你可以把程序想象成:
你给电脑写的一张"操作说明书"。
比如:
准备一个盒子 a,里面放 3
准备一个盒子 b,里面放 5
把 a 和 b 相加
结果放进盒子 c
把 c 里面的东西显示出来
电脑按照顺序执行。
因此:
int a = 3;
int b = 5;
int c = a + b;
相当于:
a = 3
b = 5
c = 3 + 5
c = 8
最后:
std::cout << c << std::endl;
就是:
把
c的值显示在屏幕上。
所以程序最终输出:
8
2. 你刚才说的第二题
你说:
int a = 3;是声明变量
这个方向是对的,但我们以后要说得更准确一点。
int a = 3;
实际上同时做了两件事:
声明变量 + 给变量初始值
拆开看:
int a = 3 ;
每个东西都有含义。
int
表示这个变量的数据类型是:
整数 integer
比如:
3
10
-5
1000
都是整数。
所以:
int a;
意思就是:
创建一个用来存放整数的变量,名字叫
a。
你可以想象成电脑内存里出现了一个盒子:
┌─────────┐
│ ? │
└─────────┘
a
这个盒子叫:
a
而且规定:
这个盒子只能用来存整数
3. = 3 是什么意思?
int a = 3;
可以想象为:
内存:
a
┌───────┐
│ 3 │
└───────┘
所以:
int a = 3;
可以理解成:
创建一个整数变量
a,并把初始值设成3。
这里有一个以后非常重要的概念。
在 C++ 中:
=
通常不是数学里的"等于"。
它更像:
把右边的值放进左边。
例如:
a = 10;
不是在说
a 等于 10
更准确地说是:
把 10 放进变量 a
假设之前:
a
┌─────┐
│ 3 │
└─────┘
执行:
a = 10;
以后就变成:
a
┌─────┐
│ 10 │
└─────┘
原来的 3 被覆盖了。
4. 为什么每句话后面都有 ;
例如:
int a = 3;
最后这个:
;
叫:
分号 semicolon
你暂时可以把它理解为:
"这一条命令写完了。"
有点像中文里的句号。
例如:
int a = 3;
int b = 5;
a = 10;
相当于三句话:
创建 a,值为 3。
创建 b,值为 5。
把 10 放进 a。
所以初学时有一个非常常见的报错:
int a = 3
忘记写:
;
编译器就可能报错。
5. int c = a + b;
现在你应该能拆一点了。
int c = a + b;
拆成:
int
c
=
a
+
b
;
含义:
int
↓
我要创建一个整数变量
c
↓
变量名字叫 c
=
↓
把右边的结果存进 c
a + b
↓
计算 a 加 b
因为:
a = 3
b = 5
所以:
a + b
就是:
3 + 5
得到:
8
然后放进 c:
c
┌───────┐
│ 8 │
└───────┘
6. 最陌生的这一句
你刚才说不知道:
std::cout << c << std::endl;
非常正常。
现在先不深入解释 std 的底层原理,只先知道它怎么读。
我们从中间开始。
cout
cout
大致可以理解为:
console output
也就是:
向屏幕输出东西。
例如:
std::cout << 123;
屏幕显示:
123
7. << 是什么意思?
这里非常容易让初学者迷惑。
std::cout << c;
你暂时可以把:
<<
想象成:
送过去
所以:
std::cout << c;
可以画成:
c 的内容
│
│
▼
cout
│
▼
屏幕
如果:
c = 8;
那么:
std::cout << c;
就是:
把 8 送到屏幕上
于是显示:
8
8. 那 std:: 又是什么?
现在只需要一个非常简单的理解。
std::cout
可以理解成:
在 C++ 标准库
std里面,找到一个叫cout的东西。
可以类比成文件夹。
假设:
std 文件夹
│
├── cout
├── endl
├── string
└── vector
那么:
std::cout
就是:
std 里面的 cout
而:
::
这个符号可以暂时理解成:
"里面的"
所以:
std::cout
读成:
std 里面的 cout
以后学到:
class
namespace
时,我们会正式解释 ::。
现在不用背理论。
9. endl 是什么?
std::endl
作用可以先简单理解为:
换行
比如:
std::cout << 8 << std::endl;
std::cout << 10 << std::endl;
屏幕是:
8
10
而不是:
810
所以:
std::cout << c << std::endl;
可以暂时翻译成:
把 c 的值输出到屏幕
然后换行
10. 整句话翻译
因此:
std::cout << c << std::endl;
我们以后看到它,可以先在脑子里翻译成:
把 c 输出到屏幕,然后换行。
11. 程序从哪里开始?
现在再看:
int main()
{
这里暂时只记住一个规则:
普通 C++ 程序一般从
main()开始执行。
你可以把:
main
理解成:
程序的大门。
电脑运行程序时,大致就是:
启动程序
↓
找到 main()
↓
从 main 里面第一句开始
↓
一行一行执行
↓
结束
因此:
int main()
{
int a = 3;
int b = 5;
int c = a + b;
std::cout << c << std::endl;
return 0;
}
执行顺序:
进入 main
↓
a = 3
↓
b = 5
↓
c = a + b = 8
↓
输出 c
↓
屏幕出现 8
↓
程序结束
12. 先不要管的东西
你现在可能还不知道:
#include <iostream>
以及:
return 0;
这两个我们下一小节再讲。
现在不要一次塞太多概念。
这一节你只需要真正理解:
int a = 3;
和:
std::cout << a << std::endl;