C语言-分支和循环语句

目录

分支语句

        if语句

关系操作符:

逻辑操作符:

        switch语句

循环语句

        while循环

        for循环

​编辑

        循环控制语句(break,continue)

        goto语句充当循环


分支语句

        if语句

if语句的括号内需要写条件表达式,通常是一个关系运算符的结果,如>、<、==等。如果表达式的结果为真(在C语言中,非零值被视为真),则执行大括号{}内的代码块。{}内可以写多行代码。如果只写1行代码,则不需要{}

以下是if语句的多种写法

1:
if(条件){// 条件为真时执行的代码
}2;
if(条件){// 条件为真时执行的代码
}
else(条件){// 条件为真时执行的代码
}3:多分支
if (expression1) {// 如果expression1为真,则执行这里的代码
} else if (expression2) {// 如果expression1为假且expression2为真,则执行这里的代码
} else if (expression3) {// 如果expression1为假、expression2为假且expression3为真,则执行这里的代码// ...
} else {// 如果所有表达式都为假,则执行这里的代码
}

以下是条件表达式一般是关系表达式,表达式中会使用关系操作符,符号两边可以是变量或表达式,也可以用于判断变量是否等于一个常数。


关系操作符:

>        大于运算符

<        小于运算符

>=        大于等于

<=        小于等于

==        相等运算符        *注意,一个等号是赋值,两个等号才能判断是否相等

!=        不相等运算符

使用关系操作符的表达式称为关系表达式,关系表达式通常返回0或1,表示真假。关系表达式常用于if或while结构。

需要注意的是,由于电脑没我们想象的那么聪明,所以多个关系运算符不宜连用。例如:

i<j<k,如果假设i=2,j=3,k=2

在我们的知识体系中,是不成立的,返回值是0.但机器从左到右运算这个表达式,先判断i<j为真

i<j就被替换成了1,于是接下来机器会判断1<k是否也成立,结果成立,返回值是1。于是就出现了错误。

上面式子中,i < j返回0或1,所以最终是0或1与变量k进行比较。如果想要判断变量j的值是否在i和k之间,应该使用下面的写法。1i < j && j < k

C 语言中,0表示假,所有非零值表示真。


逻辑操作符:

逻辑操作符提供逻辑判断功能,可以用于多个关系表达式之间,用于构建更复杂详细的表达式。

主要有3个运算符

!        逻辑取反运算符:如果一个如果表达式为真,则!表达式为假

&&        与运算符:当两边表达式均为真,整体才为真,否则为假,&&是一个双目操作符

||        或运算符:或者,两边表达式有一个为真,整体就为真



        switch语句

除了if语句外,C语言还提供了switch语句来实现分支结构。​switch语句是一种特殊形式的 if...else结构,用于判断条件有多个结果的情况。它把多重的else if改成更易用、可读性更好的形式

switch (expression) { case value1: statement case value2: statement default: statement}

上面代码中,根据表达式expression不同的值,执行相应的case分支。如果找不到对应的值,就执行default分支。

•switch后的expression必须是整型表达式•case后的值,必须是整形常量表达式

接下来展示一组代码,以便于学习:

if语句:

switch语句:


*每一个case语句中的代码执行完成后,需要加上break,才能跳出这个switch语句。​

break的作用是跳出这一循环,也就是一个{},如果不带break,那当case 1输出之后会接着执行case 2的内容

当switch括号内的值在case包含的值之外的时候会陷入死循环,这时候就需要default来跳出语句,他的作用就是充当switch与case的值不匹配的时候的分支。




循环语句


        while循环

while的语法结构与if相似

语法结构是

while(表达式) {
代码块;
}

是先判断表达式是否真,再执行循环代码块。而do-while的基础语法结构是

do{
代码块;
}while();

是先执行代码块,再判断表达式是否为真,也就是说代码块至少要执行1次



        for循环

for(表达式1;表达式2;表达式3){
代码块;
}

表达式1 用于循环变量的初始化

​表达式2 用于循环结束条件的判断

表达式3 用于循环变量的调整

while和for这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;



        循环控制语句(break,continue)

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字,就是应用到循环中的。

break的作用是用于永久的终止循环,只要break被执行,直接就会跳出循环,继续往后执行。•continue的作用是跳过本次循环continue后边的代码,在for循环和while循环中有所差异的。

continue在for循环:

在for循环中continue的作用是跳过本次循环中continue后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环无需再执行后续某些操作的时候,就可以使用continue来实现


        goto语句充当循环

goto语句可以实现在同一个函数内跳转到设置好的标号处。

在多层循环的代码中,如果想快速跳出使用goto就非常的方便,不必再使用break一层层往外边跳

*goto语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669333.shtml

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

相关文章

超多制作模板的姓氏头像生成器微信小程序源码

超多制作模板的姓氏头像生成器微信小程序源码&#xff0c;这是一款姓氏头像制作小工具&#xff0c;内含丰富多样的模板提供制作。 以前的基本是固定位置生成&#xff0c;这款制作支持拖拽调整位置&#xff0c;自定义颜色&#xff0c;阴影等等。

探索设计模式的魅力:外观模式简化术-隐藏复杂性,提供简洁接口的设计秘密

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 引言&#xff1a;探索简化之路 一、起源和演变 二、场景案例分析 2.1 不用模式实现&#xff1a;用一坨坨代码实现 2.2 问题 2.3 外观模式重构代码 定义 界面 接口 利用外观模式解决问题步骤 外观模式结构和说明 重构…

Linux 网络:PTP 简介

文章目录 1. 前言2. PTP(Precision Time Protocol​) IEEE 1588 协议简介2.1 PTP IEEE 1588 协议时间同步原理2.2 PTP IEEE 1588 协议时钟类型2.2.1 普通时钟(OC: Ordinary Clock)2.2.2 边界时钟(BC: Boundary Clock)2.2.3 透明时钟(TC: Transparent Clock)2.2.3.1 端对端透明时…

【论文研读】Better Together:Unifying Datalog and Equality Saturation

最近研究ReassociatePass整的头大&#xff0c;翻两篇Datalog的论文看看。 今天看的一篇是比较新的文章&#xff0c;23年4月贴到arxiv上的。 本文的主要贡献是提出了egglog,将Datalog和Eqsat结合起来&#xff0c;继承了Datalog的efficient incremental execution, cooperating a…

【前端web入门第四天】02 CSS三大特性+背景图

文章目录: 1. CSS三大特性 1.1继承性 1.2 层叠性 1.3 优先级 1.3.1 优先级1.3.2 优先级-叠加计算规则 2. 背景图 2.1 背景属性2.2 背景图2.3 背景图的平铺方式2.4 背景图位置2.5 背景图缩放2.6 背景图固定2.7 背景复合属性 1. CSS三大特性 1.1继承性 什么是继承性? 子级默…

前端实现搜索框筛选

效果图 页面解析 是一个input输入框和一个button按钮组成输入框查询 内容是一个折叠面板 html代码 <div class"left-content-box"><div class"colum-search"><el-input v-model"columKey" clearable placeholder"请输入关…

redis大数据统计之hyperloglog,GEO,Bitmap

目录 一、亿级系统常见的四中统计 1、聚合统计 2、排序统计 3、二值统计 4、基数统计 二、hyperloglog 去重的方式有哪些&#xff1f; hyperloglog实战演示 1、技术选型 2、代码演示 三、GEO GEO实战演示 四、Bitmap 一、亿级系统常见的四中统计 1、聚合统计 聚…

STM32F407移植OpenHarmony笔记7

继上一篇笔记&#xff0c;成功启动了liteos_m内核&#xff0c;可以创建线程了&#xff0c;也能看到shell控制台了。 今天研究文件系统&#xff0c;让控制台相关文件命令如mkdir和ls能工作。 liteos_m内核支持fatfs和littlefs两个文件系统&#xff0c; fatfs适用于SD卡&#xff…

将11.x.x升级至16.x.x不成功的一系列问题(二)node-sass sass-loader需安装指定版本

nvm 版本切换搞定了 咱就是说 那个node-sass好像有点毛病 还得指定对应的loaber版本 node.js 16.18.1对应的如下 “node-sass”: “^6.0.1”, “sass-loader”: “^10.0.1”, node.js 11.8.0 对应的如下 “node-sass”: “^4.14.1”, “sass-loader”: “^7.3.1”, 老项目即…

python-题库篇-数学

文章目录 求最大公约数和最小公倍数斐波那契数列求和运算求前n阶乘的和求年龄 求最大公约数和最小公倍数 两个数的最大公约数是两个数的公共因子中最大的那个数&#xff1b;两个数的最小公倍数 则是能够同时被两个数整除的最小的那个数。 输入&#xff1a;&#xff08;120 和…

零基础如何入门渗透测试2024年最新版,保姆级教程,小白必看!

转眼间&#xff0c;从大三开始学安全&#xff0c;到现在也有五年了&#xff0c;也算是对渗透测试有一定理解&#xff0c;今天也是出一篇入门教程&#xff0c;以实操为主&#xff0c;希望可以帮助到想入门渗透测试的小白。如果觉得有用&#xff0c;可以给我点个赞和收藏&#xf…

Android: 深入理解 ‘companion object {}‘

Android: 深入理解 ‘companion object {}’ Kotlin是一种现代的、静态类型的编程语言&#xff0c;它在设计时充分考虑了开发者的生产力和代码的可读性。其中一个独特的特性就是companion object。在本篇博客中&#xff0c;我们将深入探讨这个特性&#xff0c;理解它的工作原理…

Java21 + SpringBoot3集成七牛云对象存储OSS,实现文件上传

文章目录 前言实现步骤引入maven依赖修改配置文件创建七牛云配置类创建文件操作服务类创建文件操作控制器前端实现运行效果 总结 前言 近日心血来潮想做一个开源项目&#xff0c;目标是做一款可以适配多端、功能完备的模板工程&#xff0c;包含后台管理系统和前台系统&#xf…

EOF和0区别

题目描述 KiKi学习了循环&#xff0c;BoBo老师给他出了一系列打印图案的练习&#xff0c;该任务是打印用“*”组成的X形图案。 输入描述&#xff1a; 多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜…

你的歌声婉转入云霄

可爱的一朵玫瑰花 - 吕继宏 可爱的一朵玫瑰花塞地玛丽亚 可爱的一朵玫瑰花塞地玛丽亚 那天我在山上打猎骑着马&#xff08;人善被人欺马善被人骑&#xff09; 正当你在山下歌唱婉转入云霄 歌声使我迷了路 我从山坡滚下 哎呀呀 你的歌声婉转入云霄 强壮的青年哈萨克伊万杜达尔 …

【八大排序】选择排序 | 堆排序 + 图文详解!!

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 一、选择排序1.1 基本思想1.2 算法步骤 动图演示1.3 代码实现1.4 选择排序特性总结 二…

C/C++内存管理的底层调用逻辑

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…

【TCP/IP】用户访问一个购物网站时TCP/IP五层参考模型中每一层的功能

当用户访问一个购物网站时&#xff0c;网络上的每一层都会涉及不同的协议&#xff0c;具体网络模型如下图所示。 以下是每个网络层及其相关的协议示例&#xff1a; 物理层&#xff1a;负责将比特流传输到物理媒介上&#xff0c;例如电缆或无线信号。所以在物理层&#xff0c;可…

vue3项目实现预览图片、旋转图片功能

一、需求&#xff1a; 在点击图片时&#xff0c;能预览大图&#xff0c;弹出一个包含旋转图片功能按钮的弹窗。用户可通过点击按钮实现对图片的旋转操作 二、思路&#xff1a; 点击图片预览&#xff1a; 用户通过点击图片触发预览功能。接收图片的 URL&#xff0c;弹出一个模…

【GameFramework框架】四、GameFramework框架内置模块

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…