열거형

조성원·2025년 5월 9일
post-thumbnail

상수에 의미 있는 이름을 지정해서 상수의 의미를 명확하게 하고 가독성을 높여준다.

Switch와 함께 사용하면 유용하다.

서로 관련된 상수(정수)를 정의할 때 사용할 수 있다.

  • 열거형 형변환
int intValue = (int)MyEnum.Value1; // 열거형을 정수로
MyEnum enumValue = (MyEnum)intValue; //정수를 열거형으로

단순히 "상수의 의미를 명확하게 하고 가독성을 높여준다"는 이유라면 그냥 전역변수를 쓰면 될 텐데 enum을 사용하는 가장 큰 이유는 뭘까?

enum은 가독성 뿐만 아니라 타입 안전성을 위해서도 사용한다.

//const : 정해진 값이 프로그램 실행 중 절대 바뀌지 않게 해주는 키워드
const int STATE_IDLE = 0;
const int STATE_MOVE = 1;
const int STATE_ATTACK = 2;

void SetState(int state)
{
    // ...
}

위와 같은 코드가 있을 때 SetState는 int형이므로 외부에서SetState(999)를 넣어도 그대로 받아오기 때문에 의도치 않은 오류가 생길 위험이 있다.



enum PlayerState { Idle, Move, Attack }

void SetState(PlayerState state)
{
    // ...
}

대신 enum을 붙여서 PlayerState에게 Idle,Move,Attack이라는 정해진 요소의 값만 가질 수 있다는 규칙을 부여하고 정해진 값 이외의 값이 들어올 시 컴파일 에러를 일으키므로 타입 안정성을 높일 수 있다.



예시


※변수에 수를 넣을 경우 +1씩 차례로 지정해주며 정하지 않을 경우 0부터 시작

※상수와 비교할 땐 열거형을 형변환해주기

profile
direction *= -1;

0개의 댓글