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
相關文章
相關標籤/搜索