深色模式
第 3 章:顺序结构
本章能学到什么
- C++ 的顺序执行(和 Python 一样从上往下)
- 运算符与表达式
- 简单的类型转换
顺序结构
和 Python 一样,C++ 程序在 setup() 和 loop() 内部都是从上往下逐行执行的:
cpp
void setup() {
Serial.begin(115200);
Serial.println("第一步:打开开关");
Serial.println("第二步:等待一秒");
Serial.println("第三步:读取传感器");
}
void loop() {}运算符与表达式
算术运算符和 Python 几乎一样:
| 运算符 | 含义 | 例子 | 结果 |
|---|---|---|---|
+ - * | 加减乘 | 7 * 3 | 21 |
/ | 除法 | 7 / 2 | 3(注意!) |
% | 取余 | 7 % 2 | 1 |
重要区别:两个
int相除,C++ 直接舍掉小数(7 / 2 = 3),Python 会得到3.5。想要小数结果,至少一边用float:7.0 / 2或(float)7 / 2。
自增自减(比 Python 方便):
cpp
int count = 0;
count++; // 等价于 count += 1
count--; // 等价于 count -= 1
count += 5; // 和 Python 一样类型转换
cpp
int a = 7;
float b = a / 2; // b = 3.0!因为 a/2 先按整数算得 3,再转成 float
float c = (float)a / 2; // c = 3.5 ✅ 先把 a 转成 float 再除
int x = (int)3.99; // x = 3,直接砍掉小数(不是四舍五入)String 和数字的转换:
cpp
String s = String(123); // 数字转字符串
int n = s.toInt(); // 字符串转整数
float f = s.toFloat(); // 字符串转浮点常见坑
- 整数除法坑最多:
float d = t * 0.0343 / 2;里t是 int,t * 0.0343会自动转 float(因为有 0.0343 这个小数),这个能算对;但float d = t / 58;就错了 ++只能用于变量,5++非法- 字符串拼接:
"距离" + String(d)可以,但"距离" + d(d 是 float)会编译报错
想一想
下面代码打印什么?如果想得到 2.5,有哪两种改法?
cpp
int a = 5, b = 2;
Serial.println(a / b);💡 查看答案
打印 2(不是 2.5!)。两个 int 相除,C++ 直接丢掉小数部分。
想得到 2.5,两种改法:
cpp
Serial.println(5.0 / 2); // 改法一:让参与运算的数带小数点
Serial.println((float)a / b); // 改法二:用 (float) 强制把 a 转成浮点数再除