- (void)change:(int)a {
int number = a;
int max = 10;
switch(max) {
case number:
//Do something
break;
//.... more cases
}
}
这只是我似乎无法解决的问题的一个小例子。我看过类似的帖子和答案通常包括通过#define或enum使用常量,但是如果你有一个固定的常量,但是如果值作为参数传递,我怎么能这样做呢?如果可能的话。任何建议将不胜感激。
答案 0 :(得分:3)
简而言之,case
语句只能对常量表达式进行操作,因此如果需要更多动态条件,则必须使用if
语句。
答案 1 :(得分:0)
switch语句用于根据常量表达式列表测试变量的值。具有各种case语句的开关与用于相同比较的一系列if / elseif语句之间的区别在于语法差异而不是逻辑差异。
然而if / elseif语句更灵活,因为它们不需要常量表达式,你也可以在if / elseif中使用更复杂的逻辑表达式。
例如:
switch (iValue) {
case 1:
break;
case 4:
break;
default:
break;
}
与if / elseif语句系列具有相同的含义:
if (iValue == 1) {
} else if (iValue == 4) {
} else {
}
大多数情况下,编译器在生成switch语句的代码时会生成一系列if / elseif代码。因此,编译器为if / elseif语句系列生成的实际代码类似于为switch语句生成的代码。