C语言case字句有什么作用,switch case 语句的使用规则

【规则1-21】按字母或数字顺序排列各条case语句。

如果所有的case语句没有明显的重要性差别,那就按A-B-C或1-2-3等顺序排列case

语句。这样做的话,你可以很容易的找到某条case语句。比如:

switch(variable)

{

case A:

//program code

break;

case B:

//program code

break;

case C:

//program code

break;

default:

break;

}

【规则1-22】把正常情况放在前面,而把异常情况放在后面。

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

后面,同样要做注释。比如:

switch(variable)

{

///

//正常情况开始

case A:

//program code

break;

case B:

//program code

break;

//正常情况结束

//

//异常情况开始

case -1:

//program code

break;

//异常情况结束

//

default:

break;

}

【规则1-23】按执行频率排列case语句

把最常执行的情况放在前面,而把最不常执行的情况放在后面。最常执行的代码可能

也是调试的时候要单步执行的最多的代码。如果放在后面的话,找起来可能会比较困难,而

放在前面的话,可以很快的找到。

【规则1-24】简化每种情况对应的操作。

使得与每种情况相关的代码尽可能的精炼。case语句后面的代码越精炼,case语句的结

果就会越清晰。你想想,如果case语句后面的代码整个屏幕都放不下,这样的代码谁也难

看得很清晰吧。如果某个case语句确实需要这么多的代码来执行某个操作,那可以把这些

操作写成一个或几个子程序,然后在case语句后面调用这些子程序就ok了。一般来说case

语句后面的代码尽量不要超过20行。

【规则1-25】不要为了使用case语句而刻意制造一个变量。

case语句应该用于处理简单的,容易分类的数据。如果你的数据并不简单,那可能使用ifelse

if的组合更好一些。为了使用case而刻意构造出来的变量很容易把人搞糊涂,应该避免

这种变量。比如:

char action = a[0];

switch (action)

{

case ‘c’:

fun1();

break;

case ‘d’:

break;

default:

break;

}

这里控制case语句的变量是action。而action的值是取字符数组a的一个字符。但是这

种方式可能带来一些隐含的错误。一般而言,当你为了使用case语句而刻意去造出一个变

量时,真正的数据可能不会按照你所希望的方式映射到case语句里。在这个例子中,如果

用户输入字符数组a里面存的是“const”这个字符串,那么case语句会匹配到第一个case

上,并调用fun1()函数。然而如果这个数组里存的是别的以字符c开头的任何字符串(比

如:“col”,“can”),case分支同样会匹配到第一个case上。但是这也许并不是你想要的结

果,这个隐含的错误往往使人抓狂。如果这样的话还不如使用if-else if组合。比如:

if(0 == strcmp(“const”,a))

{

fun1();

}

else if

{

}

【规则1-26】把default子句只用于检查真正的默认情况。

有时候,你只剩下了最后一种情况需要处理,于是就决定把这种情况用default子句来

处理。这样也许会让你偷懒少敲几个字符,但是这却很不明智。这样将失去case语句的标

号所提供的自说明功能,而且也丧失了使用default子句处理错误情况的能力。所以,奉劝

你不要偷懒,老老实实的把每一种情况都用case语句来完成,而把真正的默认情况的处理

交给default子句。__

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

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

相关文章

c语言怎样用格式化文件存储,如何用格式化的方式读写文件

对格式会来说,C语言的格式读写文件是很有要求的,在前面我们已经讲解了如何去进行字符的输入输出,但事实真相,数据的类型是很丰富的,而且大家已经熟悉了用printf和scanf函数进行格式化的输入输出,他们是向终…

输出26个英文字母c语言,菜鸟求助,写一个随机输出26个英文字母的程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include // 用srand、rand函数了#include // 用time函数了#define LEN 32// 产生min~max的随机数 (包含min和max)// rand函数产生0 ~ RAND_MAX 的随机数// 一般上不同编译器要求 RAND_MAX 的值(至少)为 32767#define RAN…

二阶矩阵乘法C语言,c语言矩阵相乘

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼程序清单#include&nbspint&nbspmain(void){&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspchar&nbsp&nbsp&nbsp&nbspa[2][3];&nbsp&nbsp&nbsp&nbsp&nbsp…

c语言dll创建线程,教大家写一个远程线程的DLL注入,其实还是蛮简单的……………………...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼然后新建一个win32 application 的工程 新建c source file 写入:#include#includeint WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){char DllName[MAX_PATH]"C:\\P…

linux下qq怎么截图,ubuntu 12.04使用QQ截图安装教程

相信用过linux系统的朋友都知道,linux下的截图软件是在不咋的。虽然系统本身有带截图工具,但是却苦于没有办法在截下来的图片上作画圈、写文字说明等动作。应该有不少朋友也是从windows系统下转到linux下做开发的,不知道大家对QQ截图这个软件…

android对象申明,Kotlin中的对象表达式和对象声明的具体使用

Kotlin的对象表达式与Java中的匿名内部类的主要区别:匿名内部类只能指定一个父类型,但对象表达式可以指定0~N个肤类型。一、对象表达式对象表达式的语法格式如下:object [: 0~N个父类型]{//对象表达式的类体部分}对象表达式还有如下规则&…

android+联系服务器时间,android配置时间服务器+亚洲主要的授时服务器

我们知道,Android是通过连接指定的ntpServer来获取网络时间,而不同的服务器带来的延迟也不尽相同,通常情况下,我们自然是期望尽快获取时间,那么我们就需要对ntpServer有一定的筛选,尤其是在选择默认的ntpSe…

android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法

本文实例讲述了Android编程获取设备MAC地址的实现方法。分享给大家供大家参考,具体如下:/*** 获取设备的mac地址** param ac* param callback* 成功获取到mac地址之后会回调此方法*/public static void getMacAddress(final Activity ac, final SimpleCa…

android 资源如何下沉,关于Android业务模块下沉的一些实践及总结

此文已由作者徐铭阳授权网易云社区发布。欢迎访问前言最近在做需求过程中,一些类似学校选择、城市选择等业务相关模块想单独抽离出来,遇到一些诸如模块管理、通信方面的问题来背景最近有一个需求是学校列表,没错,就是我们平时总见…

android sqlite存储数据,Android之SQLite数据存储

关于SQLite的出生长大和壮大,这里就略去了,只记几点比较重要的用法:SQLite所支持的数据类型:SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的…

android gridview滚动条位置,Android GridView滚动到指定位置

当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能,今天研究了一下怎么保存浏览位置,发现GridView和它的父类中有4个相关的方法:public void smoothScrol…

android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...

本文首发于微信公众号「后厂技术官」在上一篇文章Android IPC机制(二)用Messenger进行进程间通信中我们介绍了使用Messenger来进行进程间通信的方法,但是我们能发现Messenger是以串行的方式来处理客户端发来的信息,如果有大量的消息发到服务端&#xff0…

nubia ui 5.0 android,流畅度爆棚 搭Android 5.0系统新机一览

近期各品牌新机都不少,而且90%以上都是Android系统的手机,可见安卓手机的主导地位仍在上升。而在系统层次,Android 5.0已经逐步开始普及,近期上市新机百分百均采用了这一系统,值得一提的是定制不再“深度”&#xff0c…

signature=4d4ce610ff2d4a5f2093452c24b70492,Reading Chromatin Signatures

摘要:The article cites a study which uses a combination of chromatin immunoprecipitation and microarray analysis to explore the histone modifications, transcription-factor binding and nucleosome density in 30 megabytes of human genome. It states…

html 百分比正方形,css实现未知宽度的正方形需求

今天群里有哥们问了一下,百分比宽度的正方形如何用css实现。其实就是不定宽的正方形如何用css实现。第一个方法利用图片的等比例缩放,用base64写一个1*1的透明png图片,宽度100%,这样容器就自动被撑成一个正方形,demo如…

html引用本地图片不能是桌面的,Img标签与本地文件:/// URL不显示在Microsoft Edge Web浏览器...

在我的桌面应用程序中,我创建了一个临时HTML文件(旨在让用户打印报告),然后通过默认显示网页浏览器。这个HTML文件保存在一个临时文件夹,例如:C:/Users/UserName/AppData/Local/TempImg标签与本地文件:/// URL不显示在…

你用计算机做过什么事情,他偷偷干了什么?(电脑)

我一本正经地胡说一下吧。控制面板→管理工具”中找到的“事件查看器”,通过它可以了解系统的喜怒哀乐和一言一行事件查看器相当于一本厚厚的系统日志,可以查看关于硬件、软件和系统问题的信息,也可以监视Windows XP的安全事件,下…

怎么用计算机算立方数,计算器的使用方法

计算器人们都很熟悉,尤其是从事数据行业的人更要懂得如何使用计算器,那么外行人士想要正确使用计算器该怎么办呢?今天小编就来为您解围。计算器包括标准型和科学型两种,其中标准型使用方法如下:1、键入数字时,按下相应…

有计算机知识,计算机基本理论基础知识总汇

计算机基本理论基础知识总汇1、计算机按照数据处理规模大小可以分为(巨型计算机)(大型计算机)(小型计算机)(微型计算机)(工作站)等2、计算机的硬件主要由(控制器)(运算器)(存储器)(输入输出设备)以及电源等硬件组成。3、计算机主机是(控制器)(运算器)(存储器)的总称&#xff0c…

麻省理工学院计算机科学与工程博士,2020年麻省理工学院博士读几年

麻省理工学院(Massachusetts Institute of Technology),简称麻省理工(MIT),坐落于美国马萨诸塞州剑桥市(大波士顿地区) ,是世界著名私立研究型大学、被誉为"世界理工大学之最"。麻省理工学院博士读几年麻省理工学院博士一般读5年&a…