열거형(Enumeration)은 C/C++ 언어에서 사용자가 직접 정의할 수 있는 데이터 타입입니다. 정수형 상수에 의미 있는 이름을 부여함으로써 프로그램의 가독성과 유지보수성을 크게 향상시킬 수 있습니다. 열거형은 enum 키워드를 사용하여 선언합니다.
열거형의 기본 문법
열거형을 선언하는 기본 문법은 다음과 같습니다.
enum enum_name{const1, const2, ....... };각 구성 요소의 의미는 아래와 같습니다.
- enum_name − 사용자가 임의로 지정하는 열거형 이름입니다.
- const1, const2 − 열거형에 포함되는 상수 값들입니다.
열거형 변수 정의하기
enum 키워드는 열거형 타입의 변수를 정의할 때도 사용됩니다. 변수를 정의하는 방법은 크게 두 가지가 있으며, 아래와 같이 작성할 수 있습니다.
enum colors{red, black};
enum suit{heart, diamond=8, spade=3, club};예제 코드
다음은 열거형을 활용한 전체 예제입니다.
#include <iostream>
using namespace std;
enum colors{red=5, black};
enum suit{heart, diamond=8, spade=3, club};
int main() {
cout <<"The value of enum color : "<<red<<","<<black;
cout <<"\nThe default value of enum suit : "<<heart<<","<<diamond<<","<<spade<<","<<club;
return 0;
}
실행 결과
The value of enum color : 5,6
The default value of enum suit : 0,8,3,4
코드 설명
위 프로그램에서는 main() 함수 외부에 colors와 suit라는 두 개의 열거형을 선언했습니다.
enum colors{red=5, black};
enum suit{heart, diamond=8, spade=3, club};colors 열거형에서 red는 명시적으로 5로 초기화되었기 때문에, 그다음 요소인 black은 자동으로 6의 값을 갖습니다. 반면 suit 열거형에서 heart는 초기값을 지정하지 않아 기본값인 0부터 시작하고, diamond는 8로, spade는 3으로 명시적으로 설정되었으며, club은 바로 앞 요소인 spade 다음 값인 4를 갖게 됩니다.
main() 함수 내부에서는 cout 객체를 통해 각 열거형 요소들이 가진 값을 순서대로 출력합니다.
cout <<"The value of enum color : "<<red<<","<<black;
cout <<"\nThe default value of enum suit : "<<heart<<","<<diamond<<","<<spade<<","<<club;
정리: 값 할당 규칙
열거형 요소에 값을 명시적으로 지정하지 않으면 첫 번째 요소는 0부터 시작하며, 이후 요소들은 이전 요소보다 1씩 증가한 값을 자동으로 부여받습니다. 특정 요소에 값을 지정하면 그다음 요소들은 해당 값에서 1씩 증가합니다. 이러한 규칙을 이해하면 매직 넘버(magic number)를 줄이고, 의미가 명확한 코드를 작성하는 데 큰 도움이 됩니다.