Jump to Case Label

发布时间:2023-05-21

一、基本用法

int num = 1;
switch (num) {
  case 1:
    printf("num is 1\n");
    break;
  case 2:
    printf("num is 2\n");
    break;
}

在上面的代码中,switch语句根据num的值跳转到对应的case标签,打印对应的信息,然后使用break语句跳出switch语句。如果没有使用break,switch语句会继续执行下面的case标签,直到遇到break或者结束语句default。

二、跳转到case的标签

int num = 2;
switch (num) {
  case 1:
    printf("num is 1\n");
    break;
  case 2:
    goto case_2;
  case_2:
    printf("num is 2\n");
    break;
  default:
    printf("num is not 1 or 2\n");
}

在上面的代码中,根据num的值,跳转到对应的case标签case_2,并且打印对应的信息。需要注意的是,使用goto语句跳转到case标签时,要在case标签后面使用一个不同的标识符,以区分普通的case标签。

三、跳过case的标签

int num = 3;
switch (num) {
  case 1:
    printf("num is 1\n");
    break;
  case 2:
    printf("num is 2\n");
    goto end;
  case 3:
    printf("num is 3\n");
    break;
  end:
    printf("switch end\n");
}

在上面的代码中,当num等于2时,跳过下面的case标签3,直接跳转到标签end,并且打印结束信息。需要注意的是,跳转到end标签不会执行end标签之后的case标签。

四、结合枚举类型使用

enum Color {RED, GREEN, BLUE};
enum Color color = RED;
switch (color) {
  case RED:
    printf("color is red\n");
    break;
  case GREEN:
    printf("color is green\n");
    break;
  case BLUE:
    printf("color is blue\n");
    break;
}

在上面的代码中,定义了一个枚举类型Color,有三个取值:RED、GREEN和BLUE。根据color的值,跳转到对应的case标签,并且打印对应的颜色信息。

五、结合字符类型使用

char ch = 'a';
switch (ch) {
  case 'a':
    printf("ch is a\n");
    break;
  case 'b':
    printf("ch is b\n");
    break;
  case 'c':
    printf("ch is c\n");
    break;
}

在上面的代码中,根据ch的值,跳转到对应的case标签,并且打印对应的字符信息。

六、总结

通过本文,我们学习了jump to case label的基本用法,以及如何跳转到case标签、跳过case标签、结合枚举类型和字符类型使用。在实际编程中,jump to case label可以方便地替代一些if-else语句,使代码更加简洁明了。