繁体   English   中英

切换语句常量问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM