c语言里面你不知道的break与switch,contiune的用法

      前言:最近上完课在宿舍闲来无事,就拿起了C Primer Plus 这本书看,是本身入门编程的第一门语言;看了一些基本语法知识点,最让我须要总一下的是就是标题所说的这个语法知识点,记得大一的时候去考计算机二级的时候,里面的好多选择有这个,当时在这里弄晕了,因此想想,仍是总结一下,加深理解与印象。编程

1、switch语句的用法:学习

看到这个就让我想起了在学习五一单片机里的矩阵键盘的写法,就用到了这个,哈哈。嗯,仍是先来看一下它的基本结构和用法:spa

一、格式:code

switch (表达式)blog

{get

        case  常量表达式1:  语句1;it

        case  常量表达式2:  语句2;io

        .......for循环

       case   常量表达式n:     语句n;入门

       default           :   语句n+1;

}

说明:

第1、全部case后面的常量表达式为便于描述咱们姑且称为标签,这些标签都只能是:a、枚举常量(有些地方叫枚举元素),b、数值常量,c、字符常量 ,d、常变量,e、宏名中的一种,注意普通变量,枚举变量不能做为标签使用的。

第2、swich 后面括号里的"表达式"容许是任何类型。

第3、执行完一个case语句后,流程控制就转移到下一个case语句继续执行下去,"case”常量表达式只是起语句标号的做用,并非在该处进行条件判断。在执行swtich语句时,根据switch()中表达式的值找到与之匹配的case字句,就今后case 子句开始执行下去,再也不进行判断。

第4、switch 是选择不是循环,若是在switch语句中出现了break语句,而且该语句的功能只是退出switch语句转去执行它下面的语句。在switch中出现continue是错误的除非switch自己就属于for或while循环的一部分。

二、下面咱们来用代码来分析:

#include  <stdio.h>

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

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

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

2、break语句的用法:

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

a、break若是用于循环是用来终止循环

b、break若是用于switch ,则是用于终止switch

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

#include  <stdio.h>

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

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

#include  <stdio.h>

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

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

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

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

#include  <stdio.h>

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\n",a,b);
    return 0;
}

演示结果:

the result is 1 0

3、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 0;
}

演示结果以下():

1 jkldjk   // 1后面的数据不符整形数据类型,因此被丢掉了,因此 i的值为1
i = 1
jkdlajfdkl     //这个输入的是垃圾数值,不符合数据类型,因此输出j的值为0。
j = 0
相关文章
相关标签/搜索