您的位置:

深入探究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语法对于编程技术人员来说是非常重要的。