C++第 2 课

第 2 课:变量、数据类型和基本运算

这一课我们开始真正接触 C++ 里最常见的一组基础。

今天只学:

复制代码
复制代码
int
double
char
bool

以及最简单的:

复制代码
复制代码
+  -  *  /

先不多学。


1. 为什么 C++ 要区分数据类型?

假设机械臂程序需要保存下面这些信息:

复制代码
复制代码
关节编号:3
关节角度:45.6°
电机状态:正常 / 异常
状态字符:'A'

它们明显不是同一种东西。

所以 C++ 要告诉计算机:

这块内存准备存什么类型的数据?

比如:

复制代码
复制代码
int joint = 3;

表示:

复制代码
复制代码
joint
┌─────┐
│  3  │
└─────┘

类型:整数

而:

复制代码
复制代码
double angle = 45.6;

表示:

复制代码
复制代码
angle
┌────────┐
│  45.6  │
└────────┘

类型:小数

2. int:整数

你已经认识它了。

复制代码
复制代码
int age = 20;

例如:

复制代码
复制代码
int joint = 1;
int speed = 5;
int count = 100;

这些都是整数。

可以保存:

复制代码
复制代码
0
1
5
100
-3
-50

但它的设计目标不是存:

复制代码
复制代码
3.14
45.6
0.001

3. double:小数

机器人里面特别常用。

复制代码
复制代码
double angle = 30.5;

例如:

复制代码
复制代码
double joint1 = 45.2;
double distance = 0.35;
double speed = 5.5;

以后你写机械臂程序,会大量见到它。

比如:

复制代码
复制代码
double target_angle = 30.5;

意思就是:

目标角度是 30.5。


4. char:单个字符

例如:

复制代码
复制代码
char grade = 'A';

注意:

复制代码
复制代码
'A'

两边是单引号

char 一般只保存一个字符。

比如:

复制代码
复制代码
char state = 'R';

可以约定:

复制代码
复制代码
R = Ready
E = Error

因此:

复制代码
复制代码
char state = 'E';

可以表示设备当前处于 Error 状态。

当然,真实工程里通常不会只靠一个 char 来做复杂状态管理,这只是现在为了理解类型。


5. bool:真假

这个特别重要。

复制代码
复制代码
bool motor_on = true;

bool 只有两个主要值:

复制代码
复制代码
true
false

分别表示:

复制代码
复制代码
真
假

例如:

复制代码
复制代码
bool motor_on = true;

可以理解成:

电机当前开启。

而:

复制代码
复制代码
bool emergency_stop = false;

可以理解成:

急停当前没有触发。

以后机器人控制里会大量出现:

复制代码
复制代码
bool connected;
bool initialized;
bool target_reached;
bool gripper_closed;

这类变量。


6. 四种类型放一起看

复制代码
复制代码
int joint = 2;
double angle = 45.5;
char state = 'A';
bool motor_on = true;

可以画成:

复制代码
复制代码
joint
┌──────┐
│  2   │
└──────┘
整数

angle
┌──────┐
│ 45.5 │
└──────┘
小数

state
┌──────┐
│ 'A'  │
└──────┘
字符

motor_on
┌──────┐
│ true │
└──────┘
真假

7. 基本运算

先看:

复制代码
复制代码
int a = 10;
int b = 2;

那么:

复制代码
复制代码
int c = a + b;

结果:

复制代码
复制代码
c = 12

这是加法。


减法

复制代码
复制代码
int c = a - b;

结果:

复制代码
复制代码
c = 8

乘法

C++ 乘法不是写:

复制代码
复制代码
×

而是:

复制代码
复制代码
*

例如:

复制代码
复制代码
int c = a * b;

得到:

复制代码
复制代码
20

所以:

复制代码
复制代码
*

表示乘法。


除法

C++ 用:

复制代码
复制代码
/

表示除法。

复制代码
复制代码
int c = a / b;

就是:

复制代码
复制代码
10 ÷ 2 = 5

所以:

复制代码
复制代码
c = 5

8. 一个很重要的坑:整数除法

看这个:

复制代码
复制代码
int a = 5;
int b = 2;

int c = a / b;

数学上:

复制代码
复制代码
5 ÷ 2 = 2.5

但 C++ 这里得到:

复制代码
复制代码
2

不是:

复制代码
复制代码
2.5

为什么?

因为:

复制代码
复制代码
a

int

复制代码
复制代码
b

也是 int

两个整数相除时,C++ 会进行:

整数除法。

小数部分会被舍掉。

所以:

复制代码
复制代码
5 / 2

得到:

复制代码
复制代码
2

不是四舍五入,而是小数部分直接不要。


9. 如果我要得到 2.5 呢?

可以写:

复制代码
复制代码
double a = 5.0;
double b = 2.0;

double c = a / b;

结果:

复制代码
复制代码
2.5

所以你以后做机器人计算时一定要警惕:

复制代码
复制代码
int

和:

复制代码
复制代码
double

的区别。

比如你在算速度:

复制代码
复制代码
距离 / 时间

如果全部写成整数,可能会造成精度丢失。


10. 看一个机械臂小例子

假设机械臂关节当前位置:

复制代码
复制代码
double current_angle = 20.0;

目标位置:

复制代码
复制代码
double target_angle = 50.0;

我们想算:

还差多少度?

可以:

复制代码
复制代码
double error = target_angle - current_angle;

代入:

复制代码
复制代码
50.0 - 20.0

得到:

复制代码
复制代码
30.0

因此:

复制代码
复制代码
error = 30.0;

以后学 PID 的时候,你会经常看到这种:

复制代码
复制代码
error = target - current;

所以你现在学的减法,将来会直接进入控制算法。


11. 完整程序逐行看

复制代码
复制代码
#include <iostream>

int main()
{
    double current_angle = 20.0;
    double target_angle = 50.0;

    double error = target_angle - current_angle;

    std::cout << error << std::endl;

    return 0;
}

逐行:

复制代码
复制代码
#include <iostream>

准备输入输出工具。

复制代码
复制代码
int main()

程序从主函数开始。

复制代码
复制代码
double current_angle = 20.0;

创建小数变量 current_angle,保存当前角度 20.0

复制代码
复制代码
double target_angle = 50.0;

创建小数变量 target_angle,保存目标角度 50.0

复制代码
复制代码
double error = target_angle - current_angle;

计算:

复制代码
复制代码
50 - 20

得到:

复制代码
复制代码
30

然后存进:

复制代码
复制代码
error

最后:

复制代码
复制代码
std::cout << error << std::endl;

输出:

复制代码
复制代码
30

12. 这一课先学到这里

现在做 4 道很小的题。

第 1 题

复制代码
复制代码
int a = 8;
int b = 3;
int c = a + b;

c 是多少?

第 2 题

复制代码
复制代码
double angle = 45.5;

这里:

复制代码
复制代码
double
angle
45.5

分别代表什么?

第 3 题

复制代码
复制代码
int a = 5;
int b = 2;
int c = a / b;

最后:

复制代码
复制代码
c = ?

第 4 题

假设机械臂:

复制代码
复制代码
double target = 60.0;
double current = 25.0;
double error = target - current;

最后:

复制代码
复制代码
error = ?

你下一条如果仍然说:

直接给标准答案并进入下一课

我就会给出答案,然后直接开始 第 3 课:运算符、赋值、++ / --,以及 === 的区别

相关推荐
代码中介商2 小时前
C++ 预约系统实战(三):服务端实现——libevent 事件驱动与业务路由
c++·json·c/s
布莱克6053 小时前
C++中的内存分区详解
c++
All for pursuit.3 小时前
【链表-9】146.LRU缓存
数据结构·c++·算法·leetcode
j7~5 小时前
【C++微服务项目开发脚手架】(接口篇一)gflags + gtest + spdlog 接口学习笔记
c++·学习·gtest·项目开发·spdlog·gflags·c++项目微服务开发脚手架
星期八不上发条5 小时前
智能指针是什么?使用场景,循环引用解决办法,面试回答
开发语言·c++·stl
ao-weilai5 小时前
Linux网络编程:Socket UDP
linux·服务器·网络·c++
.YM.Z6 小时前
C++——【继承】的底层逻辑与【多态】实现机制
c++·多态·继承
汉克老师7 小时前
GESP2026年9月认证C++三级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程
小小龙学IT8 小时前
Qt QPainter 2D 绘图系统深度解析:从画笔到渲染引擎适
c++·qt