Skip to content

第 4 章:判断结构

本章能学到什么

  • if / if-else / else if 的 C++ 写法
  • 比较与逻辑运算符
  • 花括号作用域——C++ 不用缩进表示归属,用 {}

判断结构:花括号代替缩进

Python 用缩进表示"属于 if",C++ 用花括号 {}

cpp
int distance = 15;

if (distance < 20) {
  Serial.println("亮红灯");   // 条件成立才执行
}
Serial.println("继续执行");    // 永远执行

对照第二册的 Python:

python
if distance < 20:
    print("亮红灯")
print("继续执行")

差异一目了然:条件加括号 (),代码块用 {},行末有 ;,缩进只是给人看的(但请保持好习惯)。

if-else 与 else if

cpp
if (distance <= 20) {
  Serial.println("红灯:过近");
} else if (distance <= 30) {
  Serial.println("黄灯:注意");
} else if (distance <= 40) {
  Serial.println("绿灯:安全");
} else {
  Serial.println("超出感应范围");
}

和 Python 的 elif 对应的是 else if(分开写两个词)。执行规则一样:从上到下,遇到第一个成立的就执行,后面全跳过

比较与逻辑运算符

运算符含义例子
==等于a == 5
!=不等于a != 5
< <= > >=大小比较d <= 20
&&与(and)d > 20 && d <= 30
``
!非(not)!isReady

注意:Python 的 and / or / not 在 C++ 里写成 && / || / !

完整示例:距离分级警报

cpp
void setup() {
  Serial.begin(115200);
  float distance = 25.0;

  if (distance <= 20) {
    Serial.println("红灯:过近");
  } else if (distance <= 30) {
    Serial.println("黄灯:注意");
  } else if (distance <= 40) {
    Serial.println("绿灯:安全");
  } else {
    Serial.println("感应无效");
  }
}
void loop() {}

常见坑

  • = 是赋值,== 才是比较!if (distance = 20) 在 C++ 里不报错但逻辑全错(这比 Python 更坑,要格外小心)
  • 条件必须加括号:if distance < 20 是错的,if (distance < 20) 才对
  • 花括号只有一行时可以省略,但强烈建议写上,避免日后加代码时踩坑

想一想

下面代码在 distance = 25 时打印什么?和 Python 版本对比,结果一样吗?

cpp
if (distance <= 40) {
  Serial.println("A");
} else if (distance <= 20) {
  Serial.println("B");
}
💡 查看答案

打印 Adistance = 25 时,25 <= 40 先成立,执行完就跳出,后面的 else if 不会再判断。

和第二册 Python 版的结果完全一样——两种语言的 if / else if 执行规则相同:从上往下,第一个成立的条件执行,其余跳过。写法不同(花括号、分号),逻辑一致。

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