1.单分支语句
2.多分支语句
3.逻辑运算符与逻辑表达式,关系运算符与关系表达式
4.三目运算符
登录以参加训练计划
一、条件控制结构对比
类型 | 语法结构 | 适用场景 | 特点 |
---|---|---|---|
单分支结构 | if(条件) { 代码块 } |
只需处理条件成立的情况 | 简单判断,无备选方案 |
双分支结构 | if(条件) {代码块1} else {代码块2} |
非此即彼的两种选择 | 必须且只能执行其中一个分支 |
多分支结构 | if-else if链 或 switch-case |
多个互斥条件判断 | 可读性高,处理离散值更方便 |
三目运算符 | 条件 ? 表达式1 : 表达式2 |
简单的值选择 | 代码简洁,适合赋值场景 |
二、具体实现形式
1. 单分支结构(Single Selection)
if(score >= 60) {
cout << "成绩合格";
}
2. 双分支结构(Dual Selection)
if(temperature > 30) {
cout << "开启空调";
} else {
cout << "关闭空调";
}
3. 多分支结构(Multiple Selection)
形式一:if-else if链
if(grade == 'A') {
cout << "优秀";
} else if(grade == 'B') {
cout << "良好";
} else if(grade == 'C') {
cout << "合格";
} else {
cout << "不合格";
}
形式二:switch-case结构
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
cout << "31天";
break;
case 4: case 6: case 9: case 11:
cout << "30天";
break;
case 2:
cout << (is_leap_year ? 29 : 28) << "天";
break;
default:
cout << "无效月份";
}
4. 三目运算符(Ternary Operator)
// 基本形式
int max = (a > b) ? a : b;
// 嵌套使用(慎用,影响可读性)
string result = (score >= 90) ? "优秀" :
(score >= 60) ? "合格" : "不合格";
三、关键差异对比
特性 | if语句 | switch语句 | 三目运算符 |
---|---|---|---|
判断类型 | 任意布尔表达式 | 整型/枚举值匹配 | 布尔条件 |
执行方式 | 顺序判断条件 | 直接跳转到匹配case | 立即求值 |
可读性 | 复杂逻辑更清晰 | 离散值处理更直观 | 简单判断更简洁 |
性能 | 需要逐级判断 | 跳转表优化(O(1)) | 无性能差异 |
代码量 | 较多 | 中等 | 最少 |
四、注意事项
-
case穿透问题
switch(val) { case 1: cout << "周一"; // 缺少break会继续执行case2 case 2: cout << "周二"; break; }
- 故意省略break可实现多个case共享代码
- 非故意遗漏会导致逻辑错误
-
浮点数判断
- switch语句不支持浮点型case值
- 浮点数比较应使用范围判断而非
==
-
变量作用域
if(int x = func()) { // C++17起支持 cout << x; // x在此作用域有效 }
-
三目运算符限制
- 两个分支必须是相同或兼容类型
- 不能包含流程控制语句(如return/break)
- 参加人数
- 7
- 创建人