你帮我举几个不同的例子
时间: 2023-10-21 16:07:15 浏览: 27
当`switch`的表达式为整数类型时,`case`标签可以使用整数常量或字符常量。下面是一些例子:
```c
int x = 2;
switch (x) {
case 1:
printf("x is equal to 1\n");
break;
case 2:
printf("x is equal to 2\n");
break;
case 3:
printf("x is equal to 3\n");
break;
default:
printf("x is not equal to 1, 2 or 3\n");
break;
}
```
```c
char c = 'A';
switch (c) {
case 'A':
printf("c is equal to 'A'\n");
break;
case 'B':
printf("c is equal to 'B'\n");
break;
case 'C':
printf("c is equal to 'C'\n");
break;
default:
printf("c is not equal to 'A', 'B' or 'C'\n");
break;
}
```
请注意,`case`标签不能使用变量或运行时计算的表达式,例如:
```c
int x = 2;
switch (x) {
case x + 1: // 错误!case标签必须是编译时常量
printf("x is equal to 3\n");
break;
default:
printf("x is not equal to 3\n");
break;
}
```
```c
int x = 2;
int y = 1;
switch (x) {
case y: // 错误!case标签必须是编译时常量
printf("x is equal to 1\n");
break;
default:
printf("x is not equal to 1\n");
break;
}
```
以上两个例子都是错误的,因为`case`标签必须是编译时常量。