C++第一课

第 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;
相关推荐
老赵的博客1 小时前
c++ tcp的三次握手
c++
橘子汽水1681 小时前
Leetcode 208,207实现Trie前缀树,课程表
java·数据结构·算法·leetcode
李少兄1 小时前
JavaScript 对象完全指南
开发语言·javascript·ecmascript
hanlin031 小时前
刷题笔记:力扣第169题-多数元素
笔记·算法·leetcode
张小姐的猫1 小时前
【AI大模型接入SDK】 —— Ollama本地接入Deepseek
java·linux·开发语言·网络·c++·人工智能
Nuanyt1 小时前
JUC常见核心知识梳理01 线程 并发 JMM volatile 管程 锁 synchronized
java·开发语言·网络·jvm
hfywmsj1 小时前
广州餐饮铺位招租数据建模:基于多维评估体系的选址算法设计与实现
人工智能·算法·广州餐饮铺位招租
adaierya1 小时前
用 AI 解决音频转换编程问题
开发语言·人工智能·python·分类·ai编程
何何____1 小时前
web方向js考核题解
开发语言·前端·javascript