深色模式
第 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");
}💡 查看答案
打印 A。distance = 25 时,25 <= 40 先成立,执行完就跳出,后面的 else if 不会再判断。
和第二册 Python 版的结果完全一样——两种语言的 if / else if 执行规则相同:从上往下,第一个成立的条件执行,其余跳过。写法不同(花括号、分号),逻辑一致。
