深入探究Switch語法

一、Switch語法結構

switch(expression) {
   case value1:
      // 當 expression 等於 value1 時執行的語句
      break;
   case value2:
      // 當 expression 等於 value2 時執行的語句
      break;
   default:
      // 當 expression 與上面的 value 都不匹配時執行的語句
      break;
}

Switch語句是編程語言中一種很常見的條件分支語句,其基本結構如上所述。其中expression為要被測試的表達式,value1、value2等則為表達式可能等於的值。如果expression匹配上其中一個值,則會執行相應的代碼塊直到break語句被運行或者switch語句執行完畢。如果expression沒有與任何值匹配,則會執行default中的代碼塊。

二、Switch語句Power BI

在Power BI中,switch語法可以被用於創建計數器和分段函數,例如根據數據的不同範圍來顯示不同的顏色。

Color = SWITCH(
   TRUE(),
   Sales >= 1000, "#6EAE37",
   Sales >= 500, "#F7C746",
   Sales >= 100, "#F29F4F",
   "#ED7D31"
)

此代碼段會將銷售量按照不同的範圍用不同的顏色繪製出來。這種方法相比於if語句或者嵌套if語句來說,能夠更加清晰、簡潔地表達計數器的意圖。

三、Switch語法用法

Switch語法在編程中主要用於替代if…else語句中過於冗長的判斷代碼。以下是一些常見的Switch語法用法:

1. 替代冗餘的if…else語句

Switch語句可以將複雜的if…else語句精簡成簡潔的代碼塊。以下是一個示例:

int day = 4;
switch (day) {
   case 1:
      printf("Monday");
      break;
   case 2:
      printf("Tuesday");
      break;
   case 3:
      printf("Wednesday");
      break;
   case 4:
      printf("Thursday");
      break;
   case 5:
      printf("Friday");
      break;
   case 6:
      printf("Saturday");
      break;
   case 7:
      printf("Sunday");
      break;
}

上述代碼只需要7個case,就可以完成與7個if語句相同的功能,降低了代碼的維護難度。

2. 進行肯定或否定的測試

Switch語句可以測試一個表達式是否等於特定的值,並給出true或false的結果。以下代碼可以幫助理解:

string fruit = "apple";
switch (fruit) {
   case "apple":
   case "pear":
   case "orange":
      printf("This is a fruit!");
      break;
   default:
      printf("This is not a fruit!");
      break;
}

如果fruit等於”apple”、”pear”或者”orange”中的任何一個,代碼輸出的結果就是”This is a fruit!”。否則輸出的結果為”This is not a fruit!”。可以很明顯地看出,該方法相比if語句更加簡單直觀。

3. 基於枚舉的測試

Switch語句可以根據枚舉值來進行測試。以下代碼示例:

enum Lights { Red, Yellow, Green };
Lights light = Green;
switch (light) {
   case Red:
      printf("The light is red!");
      break;
   case Yellow:
      printf("The light is yellow!");
      break;
   case Green:
      printf("The light is green!");
      break;
}

上述代碼定義了一個枚舉類型Lights,包含三個值:Red、Yellow和Green。當light等於Green時,輸出的結果為”The light is green!”。

四、Switch語法可以用哪些類型

Switch語句可以用於處理大多數數據類型,包括int、char、short、byte和long等。在Java中,switch語句還可以處理String類型。以下為一個示例:

String fruit = "apple";
switch (fruit) {
   case "apple":
      printf("This is an apple!");
      break;
   case "pear":
      printf("This is a pear!");
      break;
   case "banana":
      printf("This is a banana!");
      break;
}

如果fruit等於”apple”,則輸出的結果是”This is an apple!”。如果fruit等於其他的值,則switch語句會直接跳過。

五、Switch語句程序

以下是一個基於Switch語法的簡單程序:

#include 

int main() {
   int a;
   printf("Enter a number: ");
   scanf("%d", &a);
   switch (a) {
      case 1:
         printf("Monday");
         break;
      case 2:
         printf("Tuesday");
         break;
      case 3:
         printf("Wednesday");
         break;
      case 4:
         printf("Thursday");
         break;
      case 5:
         printf("Friday");
         break;
      case 6:
         printf("Saturday");
         break;
      case 7:
         printf("Sunday");
         break;
      default:
         printf("Invalid input!");
         break;
   }

   return 0;
}

該程序將用戶輸入的數字與1-7進行匹配,輸出該數字代表的星期幾。如果用戶輸入的數字不是1-7的範圍,則輸出”Invalid input!”。

六、Switch語句細節

1. Case中不需要break語句

在Switch語句中,如果Case代碼塊執行完畢沒有出現break語句,則程序會繼續執行下面的代碼塊,直到遇到break或者執行完畢。以下是一個例子:

int day = 4;
switch (day) {
   case 1:
      printf("Monday");
   case 2:
      printf("Tuesday");
      break;
   case 3:
      printf("Wednesday");
      break;
   case 4:
      printf("Thursday");
      break;
   case 5:
      printf("Friday");
      break;
   case 6:
      printf("Saturday");
      break;
   case 7:
      printf("Sunday");
      break;
}

在上述代碼中,如果day等於1,輸出的結果就是”MondayTuesday”,這是由於沒有break語句,導致程序繼續執行了下一個代碼塊。

2. Default語句位置

Default語句通常被放在Switch語句的末尾,可以確保所有Case代碼塊都被執行完畢後,才會執行default代碼塊。以下是一個示例:

int day = 8;
switch (day) {
   case 1:
      printf("Monday");
      break;
   case 2:
      printf("Tuesday");
      break;
   case 3:
      printf("Wednesday");
      break;
   case 4:
      printf("Thursday");
      break;
   case 5:
      printf("Friday");
      break;
   case 6:
      printf("Saturday");
      break;
   case 7:
      printf("Sunday");
      break;
   default:
      printf("Invalid input!");
      break;
}

在該代碼中,如果day等於8,程序會直接執行default代碼塊,輸出結果為”Invalid input!”。

七、Switch語法錯誤

以下是一些常見的Switch語法錯誤:

1. 沒有default代碼塊

如果Switch語句中沒有設置default代碼塊,當input不匹配任何Case時,程序會直接跳過Switch語句。

2. Case代碼塊沒有break語句

如果Case代碼塊內沒有break語句,則程序會繼續執行下一個代碼塊,直到遇到break語句或執行完畢。

3. Case代碼塊中有重複的值

如果Case代碼塊中出現重複的值,則只有第一個匹配的代碼塊會被執行。

4. switch語法與float,string,long,char也可以一起使用

但是在使用時需要注意轉換,並且不建議和double一起使用。

八、Switch語句規定

以下是一些關於Switch語句的規定:

1. Case中只能使用常量表達式或者字面量

Case代碼塊中只能使用常量表達式或者字面量,不能使用變量或函數的返回值。

2. Switch語句不能比較字符串

在很多編程語言中,Switch語句無法比較字符串類型的數據。不過在Java中,可以使用字符串的equals()方法來進行比較。

九、Switch語句的用法

Switch語句可以用於替代if…else結構中較為複雜的判斷條件,使代碼更加清晰明了。在Power BI中,Switch語法還可以用於創建計數器和分段函數等。可以對參數的不同情況進行分類處理,提高代碼的效率。

結語

本篇文章深入探究了Switch語法的各個方面,包括語法結構、應用細節、常見錯誤和規定等。Switch語句在編程中有着廣泛的應用,能夠有效地提高代碼的可讀性和執行效率。理解和掌握Switch語法對於編程技術人員來說是非常重要的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/251925.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 17:33
下一篇 2024-12-13 17:33

相關推薦

  • Python語法大全解析

    本文旨在全面闡述Python語法,並提供相關代碼示例,幫助讀者更好地理解Python語言。 一、基礎語法 1、Python的注釋方式 # 這是單行注釋 “”” 這是多行注釋,可以注…

    編程 2025-04-29
  • Python中複數的語法

    本文將從多個方面對Python中複數的語法進行詳細的闡述。Python中的複數是指具有實部和虛部的數,其中實部和虛部都是浮點數。它們可以用「實數+虛數j」的形式表示。例如,3 + …

    編程 2025-04-29
  • parent.$.dialog是什麼技術的語法

    parent.$.dialog是一種基於jQuery插件的彈出式對話框技術,它提供了一個方便快捷的方式來創建各種類型和樣式的彈出式對話框。它是對於在網站開發中常見的彈窗、提示框等交…

    編程 2025-04-28
  • 編譯原理語法分析思維導圖

    本文將從以下幾個方面詳細闡述編譯原理語法分析思維導圖: 一、語法分析介紹 1.1 語法分析的定義 語法分析是編譯器中將輸入的字符流轉換成抽象語法樹的一個過程。該過程的目的是確保輸入…

    編程 2025-04-27
  • Python進階語法全面解析

    Python語言作為一種廣泛應用於人工智能、數據分析、雲計算等多個領域的編程語言,擁有廣泛的社區和強大的生態系統。Python提供了基本語法以及常用函數和模塊,用於解決大量常規編程…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、位元組與比特 在討論byte轉int之前,我們需要了解位元組和比特的概念。位元組是計算機存儲單位的一種,通常表示8個比特(bit),即1位元組=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • Switch C:多選結構的利器

    在編寫程序時,我們經常需要根據某些條件執行不同的代碼,這時就需要使用選擇結構。在C語言中,有if語句、switch語句等多種選擇結構可供使用。其中,switch語句是一種非常強大的…

    編程 2025-04-25

發表回復

登錄後才能評論