Objective c 开关语句常量问题

Objective c 开关语句常量问题,objective-c,c,constants,switch-statement,Objective C,C,Constants,Switch Statement,这只是我似乎无法解决的问题的一个小例子。我看过类似的帖子,答案通常包括通过#define或enum使用常量,但是当您有一个固定的常量时,这些都很好,但是如果该值作为参数传递,我怎么做呢?如果可能的话。任何建议都将不胜感激。简而言之,case语句只能对常量表达式进行操作,因此如果需要更多动态条件,则必须使用if语句。简而言之,case语句只能对常量表达式进行操作,因此如果需要更多动态条件,您必须使用if语句。switch语句用于根据常量表达式列表测试变量的值。具有各种case语句的switch与用

这只是我似乎无法解决的问题的一个小例子。我看过类似的帖子,答案通常包括通过#define或enum使用常量,但是当您有一个固定的常量时,这些都很好,但是如果该值作为参数传递,我怎么做呢?如果可能的话。任何建议都将不胜感激。

简而言之,
case
语句只能对常量表达式进行操作,因此如果需要更多动态条件,则必须使用
if
语句。

简而言之,
case
语句只能对常量表达式进行操作,因此如果需要更多动态条件,您必须使用
if
语句。

switch语句用于根据常量表达式列表测试变量的值。具有各种case语句的switch与用于相同比较的一系列if/elseif语句之间的差异更多的是语法差异,而不是逻辑差异

但是,if/elseif语句更灵活,因为它们不需要常量表达式,并且您也可以在if/elseif中使用更复杂的逻辑表达式

例如:

- (void)change:(int)a {
   int number = a;
   int max = 10;

   switch(max) {
     case number:
       //Do something
       break;

       //.... more cases
   }
}
与本系列if/elseif语句具有相同的含义:

switch (iValue) {
    case 1:
        break;
    case 4:
        break;
    default:
        break;
}

大多数情况下,编译器在为switch语句生成代码时,会生成一系列if/elseif代码。因此,编译器为if/elseif语句系列生成的实际代码与为switch语句生成的代码类似。

switch语句用于根据常量表达式列表测试变量的值。具有各种case语句的switch与用于相同比较的一系列if/elseif语句之间的差异更多的是语法差异,而不是逻辑差异

但是,if/elseif语句更灵活,因为它们不需要常量表达式,并且您也可以在if/elseif中使用更复杂的逻辑表达式

例如:

- (void)change:(int)a {
   int number = a;
   int max = 10;

   switch(max) {
     case number:
       //Do something
       break;

       //.... more cases
   }
}
与本系列if/elseif语句具有相同的含义:

switch (iValue) {
    case 1:
        break;
    case 4:
        break;
    default:
        break;
}

大多数情况下,编译器在为switch语句生成代码时,会生成一系列if/elseif代码。因此,编译器为if/elseif语句系列生成的实际代码与为switch语句生成的代码类似。

为什么要为此使用switch?if-conditional更适合于该作业,您试图通过使用switch语句而不是if语句来实现什么?我不理解你的例子,我认为这是虚构的。你能提供一个更现实的例子来说明你想做什么吗?为什么你想用开关来做这个?if-conditional更适合于该作业,您试图通过使用switch语句而不是if语句来实现什么?我不理解你的例子,我认为这是虚构的。你能提供一个更现实的例子来说明你想做什么吗?