c语言switch和break用法,c语言里面你不知道的break与switch,contiune的用法
前言:最近上完课在宿舍闲来无事,就拿起了C Primer Plus 这本书看,是自己入门编程的第一门语言;看了一些基本语法知识点,最让我需要总一下的是就是标题所说的这个语法知识点,记得大一的时候去考计算机二级的时候,里面的好多选择有这个,当时在这里弄晕了,所以想一想,还是总结一下,加深理解与印象。
一、switch语句的用法:
看到这个就让我想起了在学习五一单片机里的矩阵键盘的写法,就用到了这个,哈哈。嗯,还是先来看一下它的基本结构和用法:
1、格式:
switch (表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
.......
case 常量表达式n: 语句n;
default : 语句n+1;
}
说明:
第一、所有case后面的常量表达式为便于描述我们姑且称为标签,这些标签都只能是:a、枚举常量(有些地方叫枚举元素),b、数值常量,c、字符常量 ,d、常变量,e、宏名中的一种,注意普通变量,枚举变量不能作为标签使用的。
第二、swich 后面括号里的"表达式"允许是任何类型。
第三、执行完一个case语句后,流程控制就转移到下一个case语句继续执行下去,"case”常量表达式只是起语句标号的作用,并不是在该处进行条件判断。在执行swtich语句时,根据switch()中表达式的值找到与之匹配的case字句,就从此case 子句开始执行下去,不再进行判断。
第四、switch 是选择不是循环,如果在switch语句中出现了break语句,并且该语句的功能只是退出switch语句转去执行它下面的语句。在switch中出现continue是错误的除非switch本身就属于for或while循环的一部分。
2、下面我们来用代码来分析:
#include
int main(void)
{intval ;
printf("请输入您要进入的楼层:");
scanf("%d",&val);switch(val)
{case 1:
printf("1层开");break;case 2:
printf("2层开");break;case 3:
printf("3层开");break;default:
printf("没有按到这一层");break;
}return 0;
}
演示结果如下(可以看出,只要val等于case后面的常量表达式,就会找到这个case语句进行执行,同时因为有break语句,所以他不会继续执行下去):
请输入您要进入的楼层: 22层开
二、break语句的用法:
break语句的用法主要要注意以下几点:
a、break如果用于循环是用来终止循环
b、break如果用于switch ,则是用于终止switch
c、break 不能直接用于if语句,除非if属于循环内部的一个子句,我们可以看下面一个例子(最后他执行的结果是什么都没显示):
#include
int main(void)
{int i=0;for(i=0;i<3;++i)
{if(3>2)break;// break语句虽然是if内部的语句,但是break终止的却是外部的for循环语句
printf("hh");
}return 0;
}
d、在多层循环中,break语句只能终止离他距离最近的那个循环,请看下面的例子:
#include
int main(void)
{inti ,j;for(i=0;i<3;++i)
{for(j=1;j<4;++j)
{break;
}
printf("同志们好");
}return 0;
}
输出结果(距离最近的那个for语句在执行到break语句就结束了这个for循环):
同志们好
同志们好
同志们好
e、在多层switch嵌套中,break只能终止距离它最近的switch语句:
#include
int main(void)
{int x=1,y=0,a=0,b=0;switch(x)
{case 1:switch(y)
{case 0:
a++;break;//当x=1的时候就执行最外面那个switch里面的第一个case 语句,然后里面的switch语句中的y=0,就执行case 0,然后到这个break 语句就停止往下执行了。case 1:
b++;break;
}break; //执行到这里就停止往下执行了case 2:
a++;
b++;break;
}
printf("the result is %d %d",a,b);return 0;
}
演示结果:
the result is 1 0
三、continue语句的用法:
它的用法是跳过本次循环余下的语句,转去判断是否需要执行下次循环,格式如下:
a、while(表达式)
{
A;
B;
continue;//如果执行该语句,则在执行完该语句后,会执行表达式,语句C和D都会被跳过,不会被执行;
C;
D;
}
b、for( 1 ; 2 ; 3)
{
A;
B;
continue;//如果执行完该语句后,会直接执行表达式3,而不会执行下面的语句C和D;
C;
D;
}
下面来看一个例子:
#include
int main(void)
{inti ;charch ;
scanf("%d",&i);
printf("i = %d",i);while(ch =getchar() != '')//这里的意思是判断输入的数据是否有换行符,如果有的话停止运行这个while语句,而且这个语句是为了防止用户输入了非法数据continue;intj;
scanf("%d",&j);
printf("j = %d",j);return 0;
}
演示结果如下():
1 jkldjk // 1后面的数据不符整形数据类型,所以被丢掉了,所以 i的值为1
i= 1jkdlajfdkl //这个输入的是垃圾数值,不符合数据类型,所以输出j的值为0。
j= 0
c语言switch和break用法,c语言里面你不知道的break与switch,contiune的用法相关推荐
- break在c语言中的应用,c语言中break的用法
C语言中break语句有以下两种用法: 1.当break语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句. 2.它可用于终止switch语句中的一个case. 如果使用 ...
- c语言字符串switch用法,C语言switch 语句的用法详解
搜索热词 C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的 ...
- C语言多case自动跳出,C语言switch中case后跟随break语句
1.case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即"只是开始执行处的入口标号". 因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行: ...
- c语言getchar用法_C语言 — 关键字
几十个关键字不多,用得多了自然会记住,相信大家也不会担心.下面是C语言中的 32 个关键字: 一丶C语言关键字 第一个关键字:auto 用来声明自动变量.可以显式的声明变量为自动变量.只要不是声明在所 ...
- channelinactive触发后不关闭channel_Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作...
今天是golang专题第15篇文章,我们来继续聊聊channel的使用. 在我们的上篇文章当中我们简单介绍了golang当中channel的使用方法,channel是golang当中一个非常重要的设计 ...
- c语言goto语句用法_C语言的9种控制结构
点击蓝字关注我哦 C语言语句 goto语句:无条件转向; if语句:判断语句;while循环语句; do-while语句:先执行循环体,然后判断循环条件是否成立. 之后继续循环;for语句:循环,可替 ...
- R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 后续加更内容: 应用一:if族有哪些成员呢?- ...
- c语言表达式用法,C语言 运算符、表达式和条件结构 用法总结
运算符.表达式和条件结构 内容概要:各种运算符的使用 运算符的优先级 表达式的计算 条件分支结构判断的常用结构 表达式: 表达式是运算符和操作数的组合,如下所示: s = ( n + 9 ) * ( ...
- c语言无法跳出while语句,c语言while语句的用法 该循环永远不会结束
导读:说到语句,我们很多人都知道,有朋友问c语言中while的用法,另外,还有朋友想问c语言的while循环语句,这到底怎么回事呢?事实上c语言while的限制呢,今天小编整理了c语言while语句的 ...
最新文章
- C++11带来的全新数值和字符串转换函数
- unity 是厘米还是米_身高差45厘米! 这对重庆小情侣拍短视频晒幸福火了
- redis stream java消息队列_Redis 异步消息队列与延时队列
- 快捷指令 python_快捷指令 pythonista wifi连接上局域网(自动)唤醒主机电脑或投影仪...
- SQL语句(二)创建带主键和约束的数据表
- VC++2012编程演练数据结构《31》狄杰斯特拉算法
- vbs实现恶搞无限弹窗,复制粘贴就能用
- JavaScript入门(介绍及入门编程)
- 上海蓝光集团信息安全建设方案
- SQL Server 监视(Monitoring)体系架构
- android系统修改开机动画效果,Android手机开机动画的修改
- win10重装系统后,蓝牙开关消失,点击添加蓝牙或其他设备,显示无法连接
- 阿郎恋曲(阿郎的故事)
- 多幸运用计算机演奏的乐谱,多幸运简谱-韩安旭演唱-孙世彦制谱
- bootstrap响应式布局
- borders.GetItem()方法 获取斜线Border (VC在Excel中画斜线格)
- matlab摩托车刹车问题,摩托车刹车系统的这些知识,你了解过吗?
- 2.5野兔和山猫的种群动态变化
- [洛谷P2698] [USACO12MAR]花盆Flowerpot
- WC 2019 游记 - 败者之低语
热门文章
- 女生学计算机还是英语,我是读理科班的女生,但是数学和英语不好,想读计算机专业,那样读什么好呢?希望哥哥姐姐指点下!十分感谢!...
- ftp mac上传文件到服务器,mac ftp 如何上传文件到服务器
- 笔记:Oracle报错:ORA-22858: invalid alteration of datatype
- 串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版本V 1.3)
- GitCafe加入开发者服务联盟,并带您一起回顾JDDC!
- 粉尘监测(基于STM32和Android的PM2.5监测系统)
- 网页上的视频怎么下载
- TortoiseGit右键无Git Clone
- 在谷歌浏览器chrome上安装tampermonkey插件
- 使用tld文件自定义jsp标签库