前言:最近上完课在宿舍闲来无事,就拿起了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  <stdio.h>

int main(void)
{
int val ; printf("请输入您要进入的楼层: ");
scanf("%d",&val); switch(val)
{
case :
printf("1层开\n");
break;
case :
printf("2层开\n");
break;
case :
printf("3层开\n");
break;
default:
printf("没有按到这一层\n");
break;
}
return ;
}

演示结果如下(可以看出,只要val等于case后面的常量表达式,就会找到这个case语句进行执行,同时因为有break语句,所以他不会继续执行下去):

请输入您要进入的楼层:
2层开

二、break语句的用法:

break语句的用法主要要注意以下几点:

a、break如果用于循环是用来终止循环

b、break如果用于switch ,则是用于终止switch

c、break 不能直接用于if语句,除非if属于循环内部的一个子句,我们可以看下面一个例子(最后他执行的结果是什么都没显示):

#include  <stdio.h>

int main(void)
{
int i=;
for(i=;i<;++i)
{
if(>)
break;// break语句虽然是if内部的语句,但是break终止的却是外部的for循环语句
printf("hh\n");
}
return ;
}

d、在多层循环中,break语句只能终止离他距离最近的那个循环,请看下面的例子:

#include  <stdio.h>

int main(void)
{
int i ,j;
for(i=;i<;++i)
{
for(j=;j<;++j)
{
break;
}
printf("同志们好\n");
}
return ;
}

输出结果(距离最近的那个for语句在执行到break语句就结束了这个for循环):

同志们好
同志们好
同志们好

e、在多层switch嵌套中,break只能终止距离它最近的switch语句:

#include  <stdio.h>

int main(void)
{
int x=,y=,a=,b=;
switch(x)
{
case :
switch(y)
{
case :
a++;
break;//当x=1的时候就执行最外面那个switch里面的第一个case 语句,然后里面的switch语句中的y=0,就执行case 0,然后到这个break 语句就停止往下执行了。
case :
b++;
break;
}
break; //执行到这里就停止往下执行了
case :
a++;
b++;
break;
}
printf("the result is %d %d\n",a,b);
return ;
}

演示结果:

the result is  

三、continue语句的用法:

它的用法是跳过本次循环余下的语句,转去判断是否需要执行下次循环,格式如下:

a、while(表达式)

{

A;

B;

continue;//如果执行该语句,则在执行完该语句后,会执行表达式,语句C和D都会被跳过,不会被执行;

C;

D;

}

b、for(  1  ; 2   ; 3)

{

A;

B;

continue;//如果执行完该语句后,会直接执行表达式3,而不会执行下面的语句C和D;

C;

D;

}

下面来看一个例子:

#include <stdio.h>
int main(void)
{
int i ;
char ch ;
scanf("%d",&i);
printf("i = %d\n",i); while(ch =getchar() != '\n')//这里的意思是判断输入的数据是否有换行符,如果有的话停止运行这个while语句,而且这个语句是为了防止用户输入了非法数据
continue;
int j;
scanf("%d",&j);
printf("j = %d \n",j); return ;
}

演示结果如下():

1 jkldjk   // 1后面的数据不符整形数据类型,所以被丢掉了,所以 i的值为1
i =
jkdlajfdkl //这个输入的是垃圾数值,不符合数据类型,所以输出j的值为0。
j =

c语言里面你不知道的break与switch,contiune的用法的更多相关文章

  1. break在switch中的使用例子

    /* Name:break在switch中的使用例子 Copyright: By.不懂网络 Author: Yangbin Date:2014年2月21日 03:16:52 Description:以 ...

  2. c#switch语句的用法

    switch条件语句是一种很常用的选择语句,它与if条件语句不同,它只针对某个表达式的值作出判断,从而决定执行哪一段代码. switch条件语句用到的关键字: switch case break de ...

  3. Java基础break、continue语句的用法

    break适用范围:只能用于switch或者是循环语句中.当然可以用于增强for循环. break作用: 1. break用于switch语句的作用是结束一个switch语句. 2. break用于循 ...

  4. SQL*Plus break与compute的简单用法

    SQL*Plus break与compute的简单用法在SQL*Plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现.这个两个命令简单易用,可满足日常需求,其实质也相当于 ...

  5. java continue break 关键字 详解 区别 用法 标记 标签 使用 示例 联系

    本文关键词: java continue break 关键字 详解 区别  用法 标记  标签 使用 示例 联系   跳出循环 带标签的continue和break 嵌套循环  深入continue ...

  6. java的break,另一种用法(多层循环嵌套)

    break的另一种用法: 1.跳出外循环 outer:for(int j=0;i<4;j++){//outer随便定义的一个标签 for(int i=0;i<10;i++){ if(i== ...

  7. linux c语言 fork() 和 exec 函数的简介和用法

    linux c语言 fork() 和 exec 函数的简介和用法   假如我们在编写1个c程序时想调用1个shell脚本或者执行1段 bash shell命令, 应该如何实现呢? 其实在<std ...

  8. 【SQL系列】从SQL语言的分类谈COMMIT和ROLLBACK的用法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SQL系列]从SQL语言的分类谈COMMIT和 ...

  9. C语言入门(11)——switch分支语句

    C语言提供了一种用于多分支选择的switch语句, 其一般形式为: switch(表达式) { case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; .... ...

随机推荐

  1. yuicompressor

      yui/yuicompressor: YUI Compressor https://github.com/yui/yuicompressor    YUI Compressor 详细介绍 YUI ...

  2. Machine Learning in Action(5) SVM算法

    做机器学习的一定对支持向量机(support vector machine-SVM)颇为熟悉,因为在深度学习出现之前,SVM一直霸占着机器学习老大哥的位子.他的理论很优美,各种变种改进版本也很多,比如 ...

  3. codeforces 715c

    题目大意:给定一个有N个点的树,问其中有多少条路径满足他们的边权连成的数对M取余为0.其中gcd(M,10)=1. 题解: 很亲民的点分治题目,对每一层点分治,预处理每个点到当前根的数字并对m取余,和 ...

  4. hihocoder#1050 : 树中的最长路(树中最长路算法 两次BFS找根节点求最长+BFS标记路径长度+bfs不容易超时,用dfs做TLE了)

    #1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...

  5. RobotFramework教程使用笔记——Selenium2Library库

    selenium之前已经学习介绍过了,它是一个支持多语言.多平台.多浏览器的web自动化测试框架,在robotframework中也可以导入selenium库来进行web自动化测试.它使用seleni ...

  6. centos6.5安装jdk

    1.查看Linux环境自带JDK 使用命令:# rpm -qa|grep gcj 显示内容其中包含相应信息# java-x.x.x-gcj-compat-x.x.x.x-xxjpp# java-x.x ...

  7. 【转】看C++文档的小知识

    转载:http://www.ggv.com.cn/forum/clib/ctype/isspace.html 函数isspace 原型:extern int isspace(int c);    用法 ...

  8. 【linux】lsof命令和{Linux下文件删除、句柄与空间释放问题}

      导读: 一.用事实说话 二.关于LSOF命令的其它用法: 三.参考文档:   正文: lsof:Finding open files with lsof 作用:查看文件被哪些进程打开 一.用事实说 ...

  9. 疯狂LCM

    传送门 题目要求求: \[\sum_{i=1}^nlcm(i,n)\] 先转化成gcd处理: \[n\sum_{i=1}^n\frac{i}{gcd(i,j)}\] 之后老套路 枚举gcd,并且先把d ...

  10. VS2008中使用JSONCPP方法小结

    Introduction JSON (JavaScript Object Notation) is a lightweight data-interchange format. It can repr ...