C++基礎--if/else和switch/case的區別


if和switch的區別:

一、語句的格式:

  if/else的寫法格式如下:

    int nA, nB;
    scanf_s("%d", &nA);  //輸入整數並賦值給變量a
    scanf_s("%d", &nB);
    ("%d", &nB);  //輸入整數並賦值給變量b
    if (nA > nB)
    {
        printf("%d greater than %d", nA, nB);
    }
    else
    {
        printf("%d smaller than %d", nA, nB);
    }

swith/case的寫法如下:

    int nA, nB;
    scanf_s("%d", &nA);  //輸入整數並賦值給變量a

    nB = nA + 1;
    switch (nA)
    {
    case 1:
        printf("when A is %d, B is", nA, nB);
    case 2:
        printf("when A is %d, B is", nA, nB);
    default:
        printf("when A is %d, B is", nA, nB);

    }

二、邏輯結構:

 從上面if/else與switch/case格式的區別可以看出:

  A: if/else能根據邏輯判斷輸出相應的語句,也就是說if/else更多的是進行邏輯判斷;

      switch/case從某種角度上來說,沒有相應的邏輯比較判斷,而是根據給出項跳轉到相應的分支;

  B: if判斷相應的邏輯語句,返回true/false,每條if語句都會執行一次邏輯判斷;

      switch/case會建立相應的跳轉表,根據跳轉表的項跳轉到相應的分支。

三、效率

  從兩種語句的判斷上可以看出:

  A: 從某種程度上,Switch/case比if/else的效率要高,除非if/else在第一次邏輯判斷就為true;

  B: Switch/case需要建立一張跳轉表,因此需要一定的空間的,更像是以空間換效率。

  C: if/else能進行邏輯判斷,而Switch不行,因此在需要進行邏輯判斷時使用if/else語句;

四、支持的數據類型

  Switch/case只支持部分數據類型:int、long和枚舉類型,由於byte、short、char都可以隱含轉換為int,因此:switch支持的數據類型為:byte、short、char,int、long和枚舉類型,不支持:boolean、float、double;

  if/else支持更多的數據類型,如String, double等;

建議:在能用Switch/case的情況下,盡量用Switch/case來提高效率;

 


免責聲明!

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



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