C语言深度剖析--不定期更新的第三弹

在这里插入图片描述
hello,everybody!最近又更新了哈,希望对大家有所帮助

switch case关键字

基本语法

switch(整型变量/常量/整型表达式){case 1:var 1;break;case 2:var 2;break;case 3:var 3;break;default:break;
}

switch case语句也和if语句一样具有判断和分支的功能,case进行判断,break进行分支

我们得出一个结论:

任何具有判定功能的语法,都必须具备:判定+分支

注意点

default可以放在任意的位置,不影响程序的运行,只不过按照语义来说,更习惯于放在程序后面

switch case语句不建议使用return 语句,虽然程序不会报错,但是这是一个不好的习惯,如果哪个程序员在调试的时候眼花了找不到为什么总是中途退出,会造成不必要的麻烦

再来看一个点:

看下面几行代码:

int main()
{const int a=10;switch(a){case a:printf("%d",12);break;default:break;}
}

这里需要说明的是被const修饰的变量,可以理解为变成了常量,但是这里不能写成case a,编译器会报错

case语句的排列顺序

1.按字母或数字顺序排列各条case语句

2.把正常情况放在前面,把异常情况放在后面。

如果有多个正常情况和异常情况,把正常情况放在前面,并做好注释;把异常情况放在后面,同样要做好注释

还有几个关键点:

1.不要为了使用switch语句,而刻意创建变量

int main()
{int arr[]={1,2,3,4,5};for(int i=0;i<5;i++){switch(arr[0])//可以这样来解决{case 1:printf("%d\n",12);}}return 0;
}

2.将default子句用于检查真正的默认情况
在这里插入图片描述
switch case 语句的相关总结**

1.switch语法结构中,case完成判定功能,break完成分支功能,default处理异常情况

2.case:执行语句==1:n,case多条语句(不能定义变量,如果需要,{},函数)break

3.case: 执行语句==n :1,多条case后续不写break

4.default:可以出现在任何地方,推荐放在结尾

在这里插入代码片

5.case:不能:const,普通的变量,建议要有好的case布局

do while for关键字

while循环

int main()
{int count=10;//循环条件初始化while(count>0)//循环条件判断{printf("%d\n",12);count--;//循环条件判断}
}

for循环

int main()
{for(int i=0;i<10;i++){printf("%d\n",12);}
}

个人而言,更推荐for循环,因为不会轻易地忘掉循环的三个条件,同时观感更好

do while循环

int count=10//循环条件初始化
do
{printf("%d\n",1);count--;//循环条件判断
}
while(count>0);//循环条件判断,至少执行一次

补充内容-三种循环的死循环写法**

while

while(1)
{printf(".");
}

不要粗略地认为1就是真,0就是假,非零为真

for循环

int main()
{for(;;){printf(" .");}
}

do while

int main()
{do{}while(1);
}

要提出一个概念:

任何C语言程序,在默认编译好之后,运行时,都会打开三个输入输出流

stdin:标准输入,FILE*stdin,键盘

stdout:标准输出,FILE*stdout,显示器

stderr:标准错误,FILE*stderr,显示器

拿getchar举例子

int main()
{while (1){int c = getchar();if (c == '#'){break;}printf("%d", c);//注意不要添加\n,因为在终端运行的时候回车也算了一个换行符,这样会空两行}printf("while end...\n");
}

getchar 需要注意一个细节,前面的修饰类型是int在这里插入代码片

为什么不能够是char,char能表示返回成功,但是返回失败可能不行,因为char能表示的范围是0-255,二进制的0000 0000-1111 1111

,如果有个数是1 0000 0000 ,此时会进行截断,造成不准确

需要补充个结论:键盘输入的内容,或者往显示器打印的内容都是字符!!!

打个比方:

int main()
{int ret=printf("%d\n",1234);printf("%d\n",ret);
}

在这里插入图片描述

break continue关键字

首先来谈谈break

来看下面几行代码:

int main()
{while(1){int c=putchar();if(c=='#'){break;//跳出循环}putchar(c);}printf("\n break out\n");
}

看一下运行结果:

在这里插入图片描述
如果是continue

int main()
{while (1){int c = getchar();if (c == '#'){continue;//结束本次循环}putchar(c);}printf("\n break out\n");return 0;
}

在这里插入图片描述
在这里插入图片描述
那么又要有疑问的

跳出本次循环是从1开始还是2开始再来?

答案是2,因为还要再进行条件判定,是否能够进入循环

再来看for循环的continue关键字

在这里插入图片描述
看到程序运行的结果,我们可以得出这样的逻辑链,continue会先进行自增再进行判断循环条件

我们可以得出一个结论:

while ,do while continue都是回到条件判断处,但是for是到条件更新处,因为while,do while条件判定和条件耿欣的条件都是分离的

循环语句的使用注意点

1.在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数

2.建议for语句的循环控制变量的取值采用“半开半闭区间”写法

好处是:循环次数明确,便于进行个数计算

goto语句

下面为用法示例:

    goto end;printf("%d\n", 1);printf("%d\n", 2);printf("%d\n", 3);
end:printf("%d\n", 4);printf("%d\n", 5);printf("%d\n", 6);

运行结果如下:

在这里插入图片描述
虽然在一些大型项目中会应用到goto关键字,但是建议还是不要使用goto语句,因为太灵活了,会破坏整体的结构性。

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

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

相关文章

挂轨巡检机器人在发电厂与煤矿皮带机场景的应用

一、引言 在发电厂和煤矿等重工业领域&#xff0c;皮带机作为关键设备&#xff0c;其运行状态直接关系到生产效率和安全。然而&#xff0c;传统的人工巡检方式不仅效率低下&#xff0c;还存在安全隐患。随着智能巡检技术的不断发展&#xff0c;杭州旗晟智能科技有限公司推出的…

Git学习尚硅谷(003 git分支操作)

尚硅谷Git入门到精通全套教程&#xff08;涵盖GitHub\Gitee码云\GitLab&#xff09; 总时长 4:52:00 共45P 此文章包含第15p-第p18的内容 文章目录 git分支操作分支介绍分支的好处 分支的操作查看分支创建分支切换分支&修改分支合并分支正常合并分支冲突合并 git分支操作…

如何打造在线音乐网站?java springboot架构,vue前端开发,音乐分享新体验

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

二、Maven工程的构建--JavaSEJavaEE

idea构建Maven JavaSE工程&#xff1a; idea构建Maven JavaEE工程&#xff1a; &#xff08;1&#xff09;手动创建 &#xff08;2&#xff09;插件方式创建 在idea里安装插件JBLJavaToWeb&#xff1b; 选择需要生成的项目文件后&#xff0c;右击&#xff1a; 项目的weba…

WPF在MVVM架构下使用DataGrid并实现行删除

一、效果演示 二、Model创建 //User&#xff1a;用于绑定DataGrid控件的数据 private ObservableCollection<User> _users new ObservableCollection<User>();public ObservableCollection<User> Users{get { return _users; }set { _users value; }}//Sel…

科研绘图系列:R语言折线图(linechart plots)

文章目录 介绍加载R包导入数据数据预处理画图组合图形介绍 在R语言中,折线图(Line Plot)是一种常用的数据可视化类型,用于展示数据随时间或有序类别变化的趋势。折线图通过连接数据点来形成一条或多条线,这些线条可以清晰地表示数据的变化方向、速度和模式。 加载R包 k…

iOS——APP启动流程

APP启动 APP启动主要分为两个阶段&#xff1a;pre-main和main之后&#xff0c;而APP的启动优化也主要是在这两个阶段进行的。 main之后的优化&#xff1a;1. 减少不必要的任务&#xff0c;2.必要的任务延迟执行&#xff0c;例如放在控制器界面等等。 APP启动的大致过程&#…

数字化转型的关键指南:《数字化专业知识体系》深度剖析应用策略

数字化浪潮下的企业生存法则 随着全球企业加速数字化转型&#xff0c;如何有效应对技术变革带来的挑战和机遇成为各行业关注的焦点。传统的IT管理模式已经无法满足日益复杂的数字化需求&#xff0c;亟需一种新型、综合的知识体系来引导企业迈向成功。《数字化专业知识体系》&a…

企业如何组建安全稳定的跨国通信网络?

组建一个安全稳定的跨国通信网络对于现代企业来说至关重要&#xff0c;尤其是当企业在全球范围内运营时。以下是一些关键步骤和考虑因素&#xff1a; 需求分析&#xff1a; 确定企业的具体通信需求&#xff0c;包括带宽要求、延迟敏感度、数据类型&#xff08;如语音、视频、文…

生日贺卡录放音芯片,多段音频录音ic生产厂商,NVF04M-32minute

可以录音播放的生日贺卡与传统的纸质贺卡相比&#xff0c;它有着创意以及个性的特点&#xff0c;仅需少量的电子元器件&#xff0c;即可实现录音功能&#xff0c;搭配上文字&#xff0c;让声音存储在生日贺卡里&#xff0c;让贺卡也变得有温度&#xff0c;祝福我想亲口对TA说。…

(二)ASP.NET Core WebAPI项目的启动地址设置

上一篇介绍了ASP.NET Core WebAPI项目创建&#xff0c;可参考&#xff1a; 1.webAPI的访问地址 1) 启动时&#xff0c;选择CoreWebAPI(项目名称)运行项目 可以看到打开浏览器后的地址是&#xff1a;applicationUrl"\"launchUrl 2) 启动时&#xff0c;选择IIS Expre…

仿论坛项目--Kafka,构建TB级异步消息系统

阻塞队列 • BlockingQueue 解决线程通信的问题。阻塞方法&#xff1a;put、take。 • 生产者消费者模式生产者&#xff1a;产生数据的线程。消费者&#xff1a;使用数据的线程。 • 实现类ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue、SynchronousQueue、D…

仕考网:事业编面试全流程介绍

1.进入考场 工作人员会检查考生的身份证、准考证以及随身携带物品&#xff0c;可以带食物和水 2.进入候考室 进入候考室&#xff0c;工作人员会再次确认考生信息 3.抽签 考生到齐后&#xff0c;工作人员会组织考生抽签&#xff0c;登记抽签序号、信息确认、发放号码牌 4.…

基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表

首先借助STM32我们需要了解中断系统是如何构成的 会有一个中断源&#xff0c;也就是能够向CPU发出中断请求的设备或事件。中断源不分硬件和软件&#xff0c;也就是产生中断信号&#xff0c;就会执行中断服务函数 但是CPU是如何知道中断源产生后就找到对应的中断…

springboot+vue+mybatis智慧篮球馆预约+PPT+论文+讲解+售后

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;智慧篮球馆预约利用计算机网络实现信息化管理&#xff0c;使整个智慧篮球馆预约的发展和服务水平有显著提升。 本文拟采用Eclipse开发…

玄机科技《师兄啊师兄》——动漫宇宙里绽放“黑神话”之光!

当国产3A游戏《黑神话&#xff1a;悟空》以其对中国文化的深情致敬与精湛呈现&#xff0c;点燃了全球玩家们心中的文化之火&#xff0c;震撼游戏界时&#xff0c;独属于动漫界的“黑神话”——玄机科技以科技之名&#xff0c;行文化之实&#xff0c;将这股文化热潮延伸至动漫领…

[羊城杯 2021]Ez_android-快坚持不下去的第五天

找到mainactivity函数 1. 用户名和密码的检查 2. 密码的加密然后 - 1 的操作 for (int i 0; i < bArr.length; i) {bArr[i] (byte) (bArr[i] - 1); } 这段代码通过遍历字节数组中的每个元素&#xff0c;将每个元素的值减去 1&#xff0c;并更新数组。这里的 byte 强制转…

LLM Attention and Rotary Position Embedding(旋转位置编码)

旋转位置编码&#xff08;Rotary Position Embedding&#xff0c;RoPE&#xff09;是一种能够将相对位置信息依赖集成Attention计算里的方法。就是在做词表映射的时候不是单一的进行一个embedding计算&#xff0c;还考虑位置信息。 一些资料 [1] https://arxiv.org/pdf/2104.0…

2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)

一问题重述 1.1 问题背景 "板凳龙"&#xff0c;又称"盘龙"&#xff0c;是浙闽地区的传统地方民俗文化活动。这种独特的表演艺术形式融合了中国传统龙舞的精髓和地方特色&#xff0c;展现了人们对美好生活的向往和对传统文化的传承。 在板凳龙表演中&am…

版本控制系统Git/Gitlab/GitHub

版本控制系统 git和svn:公司内部的代码仓库&#xff0c;用于存放项目代码&#xff0c;方便整合开发过程 公共代码仓库&#xff1a;github全球 gitee国内 git 分布式 ---没有中心代码库&#xff0c;所有机器之间的地位同等&#xff08;每台机器上都有相同的代码&#xff09; …