一、
bool 是 C++ 布尔类型,用来表示逻辑值,只有两种取值:
true:真(等价数值 1)false:假(等价数值 0
二、
逻辑运算符
| 运算符 | 名称 | 格式 | 规则 | ||||
|---|---|---|---|---|---|---|---|
! |
逻辑非(取反) | !a |
a 为 true → false;a 为 false → true | ||||
&& |
逻辑与 | a && b |
两边全 true,结果才 true;否则 false | ||||
| ` | ` | 逻辑或 | `a | b` | 任意一边 true,结果就 true;全 false 才 false |
关键特性:短路求值(必考)
a && b:如果a是 false,不会执行 ba || b:如果a是 true,不会执行 b
三、
关系(比较)运算符 → 返回 bool
> < >= <= == != 表达式运算结果一定是 bool
四、算术运算符(+ - * / %)
算术运算得到数字 ,数字本身不是 bool ,只有在需要 bool 的地方才隐式转换: 转换规则复习:0→false,所有非 0(正数、负数)→true
五、
assert 是断言宏(不是函数!),定义在头文件:
#include <cassert>
作用:检测一个条件是否成立。
- 如果括号内表达式 ==
true:什么都不做,程序继续运行 - 如果括号内表达式 ==
false:程序直接终止,打印报错信息(文件名、行号、失败条件)
六、
一、while 循环
语法
while(条件表达式)
{
循环体;
}
- 先判断条件(表达式隐式转 bool)
- 条件为 true → 执行循环体
- 执行完回到开头再次判断条件
- 条件 false → 直接跳出循环
特点:先判断,后执行。条件不成立,循环体一次都不运行。
int i = 1;
while(i <= 10)
{
cout << i << " ";
i++; // 一定要更新变量,否则死循环!
}
二、do while 循环
do
{
循环体;
}while(条件); // 末尾分号不能丢!
执行流程:
- 先执行一次循环体
- 再判断条件
- true:继续循环;false:退出
特点:先执行,后判断。循环体至少执行 1 次!
int i = 1;
do
{
cout << i << " ";
i++;
}while(i <= 10);
三、for 循环(最常用)
for(表达式1; 表达式2; 表达式3)
{
循环体;
}
- 表达式 1:初始化(只执行 1 次)
- 表达式 2:循环条件(判断,bool)
- 表达式 3:每次循环结束后执行(更新变量)
执行顺序: 初始化 → 判断条件 → 循环体 → 更新 → 判断条件 → 循环体......
// i从1到10
for(int i = 1; i <= 10; i++)
{
cout << i << " ";
}
灵活写法(三个表达式都可以省略)
for(;;) // 等价 while(true) 死循环
{
}
四、循环控制关键字 break /continue
1. break
直接跳出当前整个循环,循环彻底结束
for(int i = 1; i <= 10; i++)
{
if(i == 5)
break;
cout << i; // 输出1 2 3 4
}
2. continue
终止本次循环,立刻进入下一轮条件判断
for(int i = 1; i <= 10; i++)
{
if(i == 5)
continue;
cout << i; // 输出1234678910,跳过5
}
⚠️ 注意:continue 在 while 中使用时,要小心变量更新位置,防止死循环!
// 危险写法!i++ 在continue后面,永远执行不到
while(i <= 10)
{
if(i == 5) continue;
i++;
}