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  <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層開

二、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

三、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM