文章目录

  • 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 用于跳出 switchcase 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.pswp.cn/news/922323.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922323.shtml
英文地址,请注明出处:http://en.pswp.cn/news/922323.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[硬件电路-212]:电流的本质确实是电子的移动

1. 微观机制&#xff1a;电子的定向漂移与热运动定向漂移&#xff08;Drift Motion&#xff09;&#xff1a;在导体&#xff08;如金属&#xff09;中&#xff0c;自由电子&#xff08;价电子&#xff09;受电场驱动&#xff0c;从负端向正端定向移动&#xff0c;形成宏观电流。…

双RFSOC47DR-16通道5GSPS ADC采集模块

16通道5GSPS ADC采集板卡组成如图1所示。该板卡的输入接口为SMA单端输入&#xff0c;ADC采集和处理采用Xilinx公司的XCZU47DR-2FFVE1156I芯片。板卡需配备4路QSFP28光口输出&#xff0c;并需要集成网口、DDR4、SD卡、USB调试口。两块RF-Soc需确保连接通信功能。板卡的16通道需实…

pytest -- 中文文档

前言 零基础1小时快速入门pytest自动化测试教程&#xff0c;全套项目框架实战pytest配置文件可以改变pytest的运行方式&#xff0c;它是一个固定的文件pytest.ini文件&#xff0c;读取配置信息&#xff0c;按指定的方式去运行 非test文件 pytest里面有些文件是非test文件 pyt…

硬件开发2-ARM裸机开发3-IMX6ULL - 引入中断

一、铺垫引入中断 → 按键1、概要&#xff1a;实现按键控制发光二极管和蜂鸣器输入类型的外设&#xff1a;按键&#xff08;key&#xff09;2、参考手册内容完成配置过程&#xff08;1&#xff09;key 按键原理图&#xff08;2&#xff09;core 内核中命名 -- UART1 CTS&#x…

Ansible的 Playbook 模式详解

目录一、Playbook模式1.1 Playbook 的优势1.2 Playbook 的组成1.3 安装 httpd 服务案例1.4 Playbook 命令及常用参数1.5 Playbook 的语法 —— 权限相关1. remote_user2. become3. become_method1.6 Playbook 的通知与触发机制1. notify2. handlers3. 使用示例4. 使用场景1.6 P…

猿辅导Java后台开发面试题及参考答案

int 与 Integer 的区别是什么&#xff1f;若创建数量庞大的数字时使用 Integer&#xff0c;会对重复数字创建新对象吗&#xff1f;int 是 Java 中的基本数据类型&#xff0c;直接存储数值&#xff0c;占用 4 个字节&#xff0c;默认值为 0&#xff0c;不需要通过 new 关键字创建…

代码随想录学习摘抄day9(回溯1-11)

一个朴实无华的目录定义&#xff1a;回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。应用场景&#xff1a;回溯法解决的问题都可以抽象为树形结构代码模板题型第77题. 组合思路&#xff1a;每次从集合中选取元素&#xff0c;可选择的范围随着选择的进行而收缩&…

Altium Designer(AD24)打开工程文件的几种方法

🏡《专栏目录》 目录 1,概述 2,源文件 2,菜单栏 4,工具栏 5,注意事项 1,概述 本文介绍几种打开工程文件的方法。 2,源文件 找到工程的源文件存储路径,找到.PrjPcb的源工程文件,双击打开。 2,菜单栏 第1步:执行File→Open, 第2步:找到工程文件的存储路径,并选中…

Linux嵌入式自学笔记(基于野火EBF6ULL):2.点灯与ubuntu安装

一、点灯登录root&#xff1a;账号&#xff1a;root ; 密码&#xff1a;root点灯命令&#xff1a;echo 0 > /sys/class/leds/red/brightness #关闭red灯 echo 0 > /sys/class/leds/blue/brightness #关闭blue灯 echo 0 > /sys/class/leds/green/brightness …

【Java实战㊷】Java实战:MyBatis-Plus 开启MySQL数据库高效操作之旅

目录 一、MyBatis-Plus 环境集成 1.1 项目依赖引入 1.2 数据库配置 1.3 代码生成器使用 二、核心 CRUD 操作实现 2.1 基础查询 2.2 数据新增与修改 2.3 复杂查询场景 三、性能优化与高级特性 3.1 缓存配置 3.2 乐观锁实现 3.3 字段自动填充 四、实战案例:用户管理模块开发 4.1…

开学季干货——知识梳理与经验分享

技术文章大纲&#xff1a;开学季干货——知识梳理与经验分享目标受众分析明确文章面向的学生群体&#xff08;如大学生、高中生&#xff09; 分析不同群体的核心需求&#xff08;课程准备、时间管理、工具使用&#xff09; 结合技术场景&#xff08;如数字笔记、在线协作&#…

Linux《线程(上)》

通过之前的学习我们已经了解了操作系统当中的基本的概念包括进程、基础IO、磁盘文件存储等&#xff0c;但是到目前为止我们还未了解到线程相关的概念&#xff0c;这就使得当前我们对操作系统的认知还不是完整的&#xff0c;现在我们是还是无法理解一个进程当中是如何同时的执行…

为什么知识复用时缺乏场景化指导影响实用性

知识复用时因缺乏场景化指导而严重影响实用性&#xff0c;其根本原因在于知识的价值本质上根植于其应用情境。脱离了场景的“纯知识”往往是抽象、片面且难以行动的。这导致了认知鸿沟的产生、隐性知识的流失、决策风险的增加、以及学习迁移效率的低下。当使用者面对一份缺乏“…

拥抱直觉与创造力:走进VibeCoding的新世界

引言 在传统观念里&#xff0c;编程是一项高度理性、逻辑严密的活动&#xff0c;开发者需要像建筑师一样&#xff0c;用代码一行行地精确构建数字世界。然而&#xff0c;随着人工智能技术的飞速发展&#xff0c;一种全新的编程理念和体验正在兴起——它就是 VibeCoding&#xf…

HTTP的Web服务测试在Python中的实现

在Web开发领域&#xff0c;对HTTP Web服务进行测试是确保服务稳定性和可靠性的关键步骤。Python作为一种功能强大的编程语言&#xff0c;提供了多种工具和库来简化这一过程。本文将介绍如何在Python中实现HTTP的Web服务测试。首先&#xff0c;Python的requests库是测试HTTP Web…

Android Studio 构建项目时 Gradle 下载失败的解决方案

一、问题原因分析根据错误日志&#xff1a;下载地址 https://services.gradle.org/distributions/gradle-8.1-bin.zip 连接超时&#xff08;10秒&#xff09;。可能原因&#xff1a;网络环境限制&#xff08;如公司防火墙、地区网络屏蔽&#xff09;。代理配置未生效或配置错误…

mysql 与 MongoDB 的分片

MySQL 和 MongoDB 作为不同类型数据库的代表(关系型 vs 文档型),其分片机制在设计理念、实现方式和适用场景上存在显著差异。两者的分片核心目标一致——通过水平扩展(Scale Out)解决单节点存储容量和性能瓶颈,但因数据模型、事务支持和分布式设计理念的不同,形成了截然…

Coze源码分析-资源库-创建知识库-前端源码-核心逻辑与接口

创建知识库逻辑 1. 表单验证系统 文件位置&#xff1a;frontend/packages/data/knowledge/knowledge-modal-base/src/create-knowledge-modal-v2/features/add-type-content/coze-knowledge/index.tsx 知识库创建表单的验证规则&#xff1a; // 知识库名称验证规则 const nameV…

欧拉函数 | 定义 / 性质 / 应用

注&#xff1a;本文为 “欧拉函数” 相关合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 欧拉函数最全总结 jiet07 已于 2024-10-22 10:00:54 修改 一、欧拉函数的引入 首先引入互质关系&#xff1a; 如果两个正整数&#xff0c;除了 111 以…

ubuntu git push每次都要输入密码怎么解决只输入一次密码

在 Ubuntu 下使用 Git 时&#xff0c;如果每次 push 都需要重复输入密码&#xff0c;可以通过配置 Git 凭证存储来解决。以下是几种常用方法&#xff1a; &#x1f511; 方法一&#xff1a;使用 Git 凭证缓存&#xff08;推荐&#xff09; 设置凭证缓存&#xff08;默认 15 分钟…