2012-09-20 4 views
0
- (void)change:(int)a { 
    int number = a; 
    int max = 10; 

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

     //.... more cases 
    } 
} 

이것은 해결할 수없는 문제의 작은 예일뿐입니다. 나는 비슷한 게시물을 보았고 답은 일반적으로 #define이나 enum을 통해 상수를 사용하는 것을 포함하지만, 고정 된 상수가있을 때 위대한 경우가 있지만 값이 매개 변수로 전달되면 어떻게 할 수 있습니까? 그것이 가능하다면. 어떤 조언을 주시면 감사하겠습니다.Switch 문 상수 문제

+0

왜 스위치를 사용 하시겠습니까? 조건부가 작업에 더 적합 할 경우 – Mike

+1

if 문 대신 switch 문을 사용하여 수행하려는 작업은 무엇입니까? 나는 당신이 만든 일종의 예를 이해하지 못합니다. 당신이하려는 일에 대해보다 현실적인 예를 제시 할 수 있습니까? –

답변

3

간단히 말해서 case 문은 상수 식에서만 작동하므로 더 동적 조건문이 필요하면 if 문을 사용해야합니다.

0

switch 문은 상수 식 목록에 대해 변수 값을 테스트하는 데 사용됩니다. 다양한 case 문이있는 스위치와 동일한 비교를위한 일련의 if/elseif 문 사이의 차이점은 논리 차이보다 구문 차이가 더 큽니다.

그러나 if/elseif 문은 상수식이 필요하지 않으므로보다 융통성이 있으며 if/elseif에서도 더 복잡한 논리 식을 사용할 수도 있습니다. 예를 들어

:

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

은/경우 ELSEIF 문이 시리즈와 같은 의미가 있습니다

if (iValue == 1) { 
} else if (iValue == 4) { 
} else { 
} 

는 대부분의 컴파일러는 일련의 생성을 경우/ELSEIF 코드 경우 switch 문에 대한 코드를 생성 중입니다. 따라서 컴파일러에서 if/elseif 문 시리즈에 대해 생성 한 실제 코드는 switch 문에 대해 생성 된 코드와 유사합니다.