Skip to content

第 3 章:顺序结构

本章能学到什么

  • C++ 的顺序执行(和 Python 一样从上往下)
  • 运算符与表达式
  • 简单的类型转换

顺序结构

和 Python 一样,C++ 程序在 setup()loop() 内部都是从上往下逐行执行的:

cpp
void setup() {
  Serial.begin(115200);
  Serial.println("第一步:打开开关");
  Serial.println("第二步:等待一秒");
  Serial.println("第三步:读取传感器");
}
void loop() {}

运算符与表达式

算术运算符和 Python 几乎一样:

运算符含义例子结果
+ - *加减乘7 * 321
/除法7 / 23(注意!)
%取余7 % 21

重要区别:两个 int 相除,C++ 直接舍掉小数(7 / 2 = 3),Python 会得到 3.5。想要小数结果,至少一边用 float7.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 转成浮点数再除

不积跬步,无以至千里;万里之行,始于当下。