当前位置: 首页 > news >正文

深入解析:C语言---判断语句

文章目录

  • 1. if 语句
  • 2. if...else 语句
  • 3. if...else if...else 语句
  • 4. switch 语句
  • 5. 三元运算符 ( ? : )
  • 总结与对比
  • 如何选择

C语言中的判断语句用于根据给定的条件来决定执行哪一段代码。其核心是条件为真(必须)则执行一段代码,条件为假(非必须)则执行另一段代码。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
C语言提供了以下几种主要的判断/分支结构:
1、if 语句
2、if…else 语句
3、if…else if…else 语句
4、switch 语句
5、三元运算符(条件运算符)

1. if 语句

这是最基本的形式。如果条件为真,则执行后面的代码块。
语法:

if (condition) {
// 如果 condition 为真(非0),则执行这里的代码
}

示例:

#include <stdio.h>int main() {int number = 10;if (number >5) {printf("数字大于5。\n"); // 这行会被执行}return 0;}

2. if…else 语句

在 if 的基础上增加了一个 else 分支。如果条件为真,执行 if 的代码块;如果为假,则执行 else 的代码块。

语法:

if (condition) {
// 条件为真时执行
} else {
// 条件为假时执行
}

示例:

#include <stdio.h>int main() {int age = 16;if (age >= 18) {printf("你已成年。\n");} else {printf("你是未成年人。\n"); // 这行会被执行}return 0;}

3. if…else if…else 语句

用于检查多个条件。程序会按顺序检查每个 if 或 else if 的条件,一旦某个条件为真,就执行其对应的代码块,然后跳过整个判断结构的其余部分。
语法:

if (condition1) {
// condition1 为真时执行
} else if (condition2) {
// condition1 为假但 condition2 为真时执行
} else if (condition3) {
// condition1 和 condition2 都为假但 condition3 为真时执行
} else {
// 所有上述条件都为假时执行
}
// 可以有很多个 else if

示例:

#include <stdio.h>int main() {int score = 85;if (score >= 90) {printf("成绩优秀!\n");} else if (score >= 80) { // 85 >= 80 为真,执行这里printf("成绩良好。\n"); // 这行会被执行} else if (score >= 70) {printf("成绩中等。\n");} else if (score >= 60) {printf("成绩及格。\n");} else {printf("成绩不及格。\n");}return 0;}

4. switch 语句

switch 语句用于基于一个整型或字符型表达式的值来执行不同的代码块。它是一种多路分支选择结构,比多个 if…else if 更清晰。
语法:

switch (expression) {
case constant1:
// 如果 expression 的值等于 constant1,执行这里的代码
break; // break 用于跳出 switch
case constant2:
// 如果 expression 的值等于 constant2,执行这里的代码
break;
case constant3:
// ...
break;
default:
// 如果 expression 的值不匹配任何 case,执行这里的代码
// default 是可选的
}

重要规则:
1、expression 的结果必须是整型或字符型。
2、case 后面的值必须是整型或字符型常量。
3、break 语句至关重要。如果省略 break,程序会继续执行下一个 case 中的代码,直到遇到 break 或 switch 结束。这被称为“穿透”(fallthrough),有时会故意这样用。
示例:

#include <stdio.h>int main() {char grade = 'B';switch (grade) {case 'A':printf("完美!\n");break;case 'B':printf("做得很好!\n"); // 这行会被执行break;case 'C':printf("做得不错。\n");break;case 'D':printf("刚好及格。\n");break;case 'F':printf("不及格,需要再努力。\n");break;default:printf("无效的成绩。\n");}return 0;}

故意使用“穿透”的示例:

#include <stdio.h>int main() {int number = 2;switch (number) {case 1:case 2:case 3:printf("数字是1, 2或3。\n"); // number=1,2,3 都会执行这里break;case 4:printf("数字是4。\n");break;default:printf("数字不是1,2,3,4。\n");}return 0;}

5. 三元运算符 ( ? : )

这是一个非常简洁的条件表达式,可以看作是 if…else 的简写形式。它返回一个值。
语法:

condition ? expression_if_true : expression_if_false;
如果 condition 为真,整个表达式的值为 expression_if_true 的结果,否则为 expression_if_false 的结果。

示例:

#include <stdio.h>int main() {int a = 10, b = 20;int max;// 等价于: if (a > b) { max = a;} else { max = b;}max = (a > b) ? a : b;printf("较大的数字是:%d\n", max); // 输出 20// 也可以直接用在函数参数等地方printf("a是%s\n", (a % 2 == 0) ? "偶数" : "奇数"); // 输出 "a是偶数"return 0;}

图片来自菜鸟教程:https://www.runoob.com/cprogramming/c-decision.html
在这里插入图片描述

总结与对比

语句类型用途优点
if简单的单条件判断结构简单,适用于所有条件、
if…else二选一的分支逻辑清晰,处理真假两种情况\
if…else if…else多条件分支判断可以处理复杂的多个并列或递进条件
switch基于单个表达式的多个固定值进行分支结构清晰,效率高(通常使用跳转表)
三元运算符 ? :简单的二选一条件赋值或返回代码简洁,一行完成

如何选择

1、如果判断的条件是一个变量是否等于某些特定的常量值,优先考虑 switch,会使代码更清晰。

2、如果条件是一个范围(如 score > 60)或者涉及多个变量的复杂逻辑(如 a > b && c < d),则必须使用 if 系列语句。

3、如果只是简单的二选一赋值,三元运算符非常方便。

http://www.jsqmd.com/news/418/

相关文章:

  • vue基于Springboot框架网上电子书店商城好书推荐管理系统 - 教程
  • YOLO进阶提升 4训练准备与数据处理
  • YOLO进阶提升 5标注与配置
  • 【学术会议前沿信息|科研必备】IEEE/EI/Scopus三检护航!人工智能+自动化控制+人文社科+遥感+地理信息+视觉领域国际会议征稿启动,硕博生速来! - 教程
  • YOLO进阶提升 3YOLOv4 改进
  • 解码C语言位字段
  • Sql Server 多层嵌套事务的执行结果
  • 深入解析:数据库入门实战版
  • es入门
  • YOLO进阶提升 1YOLOv2 改进
  • C# Avalonia 15- Animation- AnimationPlayerTest
  • Windows电脑快捷键
  • 基于Python+Vue开发的体育场馆预约管理系统源码+运行步骤
  • JSONArray集合根据某个字段查询对象
  • 详细介绍:Parasoft C/C++test 针对嵌入式开发的内存错误检测解决方案
  • [WC2006] 水管局长
  • 02-Media-7-uvc.py 应用软件解码的USB摄像头(UVC)捕获视频并显示的程序
  • YOLO入门理解 3YOLOv1 思路与细节
  • 完整教程:Qt开发经验 --- qmake执行系统命令(15)
  • YOLO入门理解 评估指标
  • 清除win+r“运行”对话框中的历史记录
  • [ICPC 2024 Yokohama R] Peculiar Protocol
  • YOLO入门理解 基础概念
  • The 2025 ICPC Asia East Continent Online Contest (II)(C,D,E,H,I)
  • 深入解析:不同上位开发语言、PLC下位平台、工业协议与操作系统平台下的数据类型通用性与差异性详解
  • 2022年十大Web黑客技术提名开启
  • 13. LangChain4j + 加入检索增加生成 RAG(知识库) - Rainbow
  • 实用指南:微信小程序-6-页面布局和事件绑定以及页面跳转
  • 终旅之始——2025 . 9 . 20
  • CentOS 7 源码版 PhpMyAdmin 安装指南(适配 Nginx+PHP-FPM 环境) - 教程