switch不同常量但是所对应的结果相同可以采用一个case吗?
可以的,如有用,请采纳,谢谢
switch (num) {
case 1:
case 2:
case 3:
printf("Number is 1, 2 or 3\n");
break;
default:
printf("Number is not 1, 2 or 3\n");
break;
}
可以
这种情况叫做case穿越,比如
case 1:
case 2:
你的代码
break;
case 3:
case 4:
case 5:
...
下面是一个使用switch语句处理不同常量但所对应结果相同的实例,假设有一个枚举类型表示一周的天数:
```c++
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
如果我们需要根据一周中的某一天来输出相应的提示信息,假设周一到周五输出"工作日",周六和周日输出"周末",可以这样写:
void printDayType(Weekday day) {
switch (day) {
case Monday:
case Tuesday:
case Wednesday:
case Thursday:
case Friday:
std::cout << "工作日" << std::endl;
break;
case Saturday:
case Sunday:
std::cout << "周末" << std::endl;
break;
default:
std::cout << "无效的输入" << std::endl;
break;
}
}
```
在这个例子中,周一到周五对应的结果是相同的,因此可以使用一个case来处理它们,而周六和周日也对应相同的结果,同样使用一个case来处理它们。
但是需要注意以下两点:
不同的常量必须具有相同的类型。switch语句中的表达式的值与case标签中的常量值进行比较,如果它们的类型不同,会出现类型转换问题。
代码的可读性和可维护性。虽然使用一个case可以达到相同的结果,但是对于其他开发人员或自己未来阅读代码时,理解代码的意图可能会更加困难。因此,如果不同的常量对应的结果相同,建议使用多个case语句来明确表达代码的意图,增加代码的可读性和可维护性。
综上所述,虽然可以使用一个case来处理不同常量但是所对应的结果相同的情况,但是建议根据实际情况来决定是否使用多个case。
不知道你这个问题是否已经解决, 如果还没有解决的话:int main(){
int a;
cout<<"Input date, please:"<<endl;
cin>>a;
switch(a){
case 1: printf("Monday\n"); break;
case 2: printf("Tuesday\n"); break;
case 3: printf("Wednesday\n"); break;
case 4: printf("Thursday\n"); break;
case 5: printf("Friday\n"); break;
case 6: printf("Saturday\n"); break;
case 7: printf("Sunday\n"); break;
default:printf("error\n"); break;
}
return 0;
}