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

if和switch的區別:spa

1、語句的格式:code

  if/else的寫法格式以下:blog

 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的寫法以下:it

 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); }

2、邏輯結構:class

 從上面if/else與switch/case格式的區別能夠看出:效率

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

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

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

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

3、效率

  從兩種語句的判斷上能夠看出:

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

  B: Switch/case須要創建一張跳轉表,所以須要必定的空間的,更像是以空間換效率。

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

4、支持的數據類型

  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來提升效率;

相關文章
相關標籤/搜索