📄 一句话概括
第一种形式就是光杆 if:条件为真,执行大括号里的语句;为假,整个块跳过去。它只回答"这件事做不做",不设"不做时干什么"——最简单、也最常用的一种判断。
一、语法与执行流程
if (条件) {
语句; // 条件为真才会执行
}
// 大括号之后,真假两路汇合,程序继续
执行顺序(对着图看):程序走到 if → 算条件 → 真:进大括号干完再出来;假:直接跳过大括号 → 从大括号后面继续往下走。
要点:
- 条件为假时什么都不发生,不是"出错"——跳过本来就是单分支的设计
- 条件后面别加分号(4.2 三铁律之一)
- 只有一句要执行时大括号可省,但建议永远写上——后面加语句时不容易踩"if 只管一条"的坑
二、实例 01:判断输入的数是否为奇数
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入一个整数:";
cin >> n;
if (n % 2 != 0) { // 除以 2 余数不是 0,就是奇数
cout << n << " 是奇数" << endl;
}
cout << "程序结束" << endl;
return 0;
}
看到什么算成功:输入 7 输出"7 是奇数"+ "程序结束";输入 8 只输出"程序结束"。
这个实例藏着第三章的两件旧装备:
%取余(3.1.1):n % 2得余数,余 1 是奇、余 0 是偶- 为什么写
!= 0而不是== 1?——第三章讲过%的符号跟被除数:输入-7时-7 % 2 = -1,用== 1判会漏掉负奇数;!= 0才两个都管住。(写!(n % 2 == 0)或位运算n & 1也行——后者见 3.1.5)
三、30 秒实验:负数验证
把实例里的条件改成 n % 2 == 1,分别输入 7 和 -7:
- 输入
7:报"奇数"——对 - 输入
-7:不吭声——错!-7 % 2是-1不是1
改回 != 0,两个都对。一个条件写法的对错,要拿边界输入(负数、0)验过才算数。
四、常见误区
- "条件为假时程序会报错"——不会,跳过是正常行为。想让"假"也干活,那是双分支的活(4.2.2)。
- "if 大括号里可以放变量定义,外面也能用"——不行。大括号是作用域边界(2.1.5),里面定义的变量出了括号就没了。
- "
if (n % 2 == 1)和if (n % 2 != 0)一样"——负数面前不等价(上面的实验就是铁证)。
自测三问(点开对答案)
1. 单分支 `if` 条件为假时执行什么?——跳过整个大括号,从后面继续(不报错、不干假路的事)。 2. 判奇数为什么推荐 `n % 2 != 0` 而非 `== 1`?——负奇数取余得 -1,`== 1` 会漏判。 3. `if` 块里定义的变量,块外能用吗?——不能,大括号是作用域边界。- ☐ 4.2.2 第二种形式的判断语句(下一节)
相关笔记
- 判断语句 —— 三铁律在本节兑现
- 算术运算符 —— % 符号跟被除数,本节实例的暗坑
- 🔷 C++基础 · 索引 —— 全课路线图