[英]Switch Statement constant issue
- (void)change:(int)a {
int number = a;
int max = 10;
switch(max) {
case number:
//Do something
break;
//.... more cases
}
}
这只是我似乎无法解决的问题的一个小例子。 我看过类似的文章,答案通常包括通过#define或枚举使用常量,但是当您有固定的常量但如果将值作为参数传递时,这些方法就很好了? 如果有可能的话。 任何意见,将不胜感激。
简而言之, case
语句只能对常量表达式进行操作,因此,如果需要更多动态条件,则必须使用if
语句。
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语句生成的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.