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

C语言基础语法,分支语句

前两节主要介绍了C语言的类型,本节中开始说明C语言中构建复杂语句的方法。这些方法主要解决工程中遇到的问题,如需要根据情况执行不同的代码,这个就涉及到分支和循环语句。

对于分支语句,涉及到的关键字如下所示。

if...elseswitch...case...defaultbreakcontinuereturn分支语句

分支语句主要用于根据不同条件执行不同的代码块。C语言支持两种类型的分支语句:`if...else if...else语句和switch...case语句`。

if语句

其中if语句格式如下所示。

// if格式 if (condition1) { // 代码块1 } else if (condition2) { // 代码块2 } else { // 代码块3 } // 举例说明, if代码块进行表达式判断 if (a > 0) { printf("a is positive\n"); } else if (a < 0) { printf("a is negative\n"); } else { printf("a is zero\n"); } // 举例说明, if代码块进行表达式判断 if (a == 1) { printf("a is one\n"); } else { printf("a is other\n"); }

可以看到`if...else if...else`语句可以根据多个条件执行不同的代码块。if语句是按照顺序执行的,当检测到第一次满足条件后,就可以执行对应的代码块,而后续条件则会被忽略。对于if中的语句,支持使用符号`&&(逻辑与)、||(逻辑或)、!`(逻辑非)进行组合。

具体示例如下所示。

// 举例说明,逻辑与 if (a > 0 && b > 0) { printf("a and b are positive\n"); } // 举例说明,逻辑或 if (a > 0 || b > 0) { printf("a or b is positive\n"); } // 举例说明,逻辑非 if (!(a > 0)) { printf("a is not positive\n"); }

对于C语言来说,如果比较数据短,可以使用`?:`运算符进行条件判断。

其格式如下所示。

// ?:格式 (condition) ? expression1 : expression2; // 举例说明,?:运算符 int a = 10; int b = 20; int max = (a > b) ? a : b; printf("max = %d\n", max);

对于`?:`运算符,如果condition为真,则返回expression1,否则返回expression2。

switch语句

switch语句格式如下所示。

// switch格式 switch (expression) { case value1: // 代码块1 break; case value2: // 代码块2 break; default: // 默认代码块 break; } // 举例说明,整型 switch (a) { case 1: printf("a is one\n"); break; case 2: printf("a is two\n"); break; default: printf("a is other\n"); break; } // 举例说明,枚举类型 typedef enum { RED = 0, GREEN = 1, BLUE = 2, } color_t; color_t color = GREEN; switch (color) { case RED: printf("color is red\n"); break; case GREEN: printf("color is green\n"); break; case BLUE: printf("color is blue\n"); break; default: printf("color is other\n"); break; }

可以看到,switch语句也可以根据不同的条件执行不同的代码块。不过和if语句不同,switch后要求的是变量,只能是整型(char、short、int、signed)或者枚举类型,不能是表达式;case后要求的是常量表达式或者枚举类型的具体值,不能是变量或者表达式。

注意:**对于switch语句中,除非需要两个case语句连续执行,否则每个case语句后面必须要加上break语句。**这是因为case支持穿透,代码会继续执行,直到遇到break、return或switch结束;很多switch语句中的问题,都是遗漏了break语句导致的。

http://www.cnnetsun.cn/news/2898181.html

相关文章:

  • 终极B站视频下载方案:一键解锁4K高清会员内容
  • 别再手动做报表了!用永洪BI Desktop,5分钟搞定一份动态销售仪表板(附详细步骤)
  • 别再手动签名了!用Zephyr的MCUBoot实现固件安全升级,这篇保姆级教程带你搞定RSA-2048签名和分区配置
  • 企业级SSD好在哪?是否耐用——常见问题全解答
  • wxPython Phoenix:Python 跨平台 GUI 的延续
  • Mac百度网盘免费加速终极指南:3分钟解锁SVIP高速下载体验
  • CRMEB Pro 商品上下架二开避坑:一个开关为什么会牵动审核、购物车和活动商品?
  • 从FTP下载到数据分析:一份给大气科学新手的GDAS1数据处理全流程指南
  • 手把手教你用TiggerRamDisk绕过iPhone/iPad激活锁(Win7/Win10/Mac通用,支持iOS16.3)
  • 从下载到通关:手把手带你完成你的第一个VulnHub靶机(以某经典入门靶场为例)
  • 机器学习在几何结分类中的捷径学习问题与解决方案
  • 座舱与内外饰品牌表达:体验、材料、工艺、量产一致性怎么讲
  • 保姆级教程:在Linux服务器上配置PCIe AER错误监控与日志分析
  • 无人机飞行日志分析终极指南:5分钟掌握浏览器端数据可视化
  • 手把手教你用ADuM1402给STM32的UART做隔离,附面包板快速验证方法
  • 你的数字记忆正在消失:解锁微信聊天记录的永恒备份
  • 别再傻傻用SysTick了!手把手教你用STM32F4的DWT单元做高精度性能分析
  • 使用react-force-graph构建3D力导向图:从社交网络到知识图谱的交互式可视化
  • 手把手教你用STM32的SPI驱动SIT2515/MCP2515实现CAN通信(附完整代码)
  • 从Proteus到实物:手把手教你搭建DAC0832数模转换电路并实测电压
  • 全志TWI/I2C驱动实战:从设备树配置到用户态读写(Linux 4.9/5.4)
  • Spring Boot 与 Maven 依赖管理详解
  • VS2013一键编译的MFC版PE文件结构查看器源码包
  • 三秒极速恢复!用QEMU检查点快照为你的开发环境打造“时光机”(附-monitor命令详解)
  • ArcGIS栅格计算器不够用?试试用Python脚本实现‘条件批量处理’:以植被覆盖度与异常值填充为例
  • 为什么传统压缩工具无法满足现代数据管理需求?7-Zip-zstd的六种算法解决方案深度解析
  • 番茄小说下载器技术解析与多平台部署指南
  • 日冕环振荡与KHI湍流阻尼的观测与模拟研究
  • ESP32-C3单SPI驱动双屏ST7735S:在VSCode+PIO环境下修改TFT_eSPI库的完整避坑记录
  • Ubuntu部署Docker