2010-04-16 3 views
4

enum 값에 대해 산술 연산을 수행 할 수있는 방법이 있습니까? (나는이 증가 할 수없는,하지만 우리는이 변수가 이름을 가질 수 바르 증가에 의해 어쨌든이 있음을 알아?)열거 형 값을 의심합니까?

enum Type{Zero=0,One,Two,Three,Four,Five,Six,Seven,Eight,Nine}; 

main() 
{ 
    enum Type Var = Zero; 

    for(int i=0;i<10;i++) 
    { 
     switch(Var) 
     { 
      case Zero: 
       /*do something*/ 
      case One: 
       /*Do something*/ 
      ..... 
     } 
     Var++; 
    } 
} 

답변

4

그냥 int 캐스팅 및 백업 할 수 있습니다 물론 :

var = (Type) ((int) var + 1); 
+0

감사합니다 ... 나는 그것을 얻었습니다. – maddy

1

예, 산술 연산에서 열거 형을 사용할 수 있습니다. 다음 코드를 시도해보십시오.

if (Two + Two == Four) 
{ 
    printf("2 + 2 = 4\n"); 
} 

당신은 당신이 사용하는 루프에 대한 대체 할 수있는,

enum Type i; 
for(i=Zero; i<=Nine; i=(enum Type)(i + One)) 
{ 
    printf("%d\n", i); 
} 

나는 일반적으로 열거 형 같은 장난을 용납하지만, 열거의 요소가 정수가 특정 사건에 대한하지 않습니다 , 작동합니다.