① 기억이 용이하다.

enum대신 정수형 변수를 대신 사용할 수 도 있다. 하지만, 이렇게 될때 각 정수의 의미가 무엇인지를 만드는 사람이 기억하고 있어야 한다. 값이 많아질 수록 혼란스러울거다. 보통, 사람은 숫자보다 문자를 더 잘 기억한다. 그리고, enum의 원소들을에게 의미를 부여한 이름을 준다면 더 기억하기가 쉬울 것이다.


② 소스의 가독성(Readability)이 높아진다.

enum의 원소만 봄으로써, 그 상수의 의미를 보다 쉽게 파악 할 수 있고, 소스 전체의 가독성을 높이는데 도움이 된다. 예를 들어 whatdays = 0; 이라고 표현한다면, 이게 월요일인지,, 일요일인지, 도무지 알 길이 없다. 하지만 whatdays = mon; 이라고 한다면, 두말할나위없이 이해할 수 있다. 두명이상의 Project나 팀단위 작업을 할때에는 알고리즘을 아무리 잘 짜도 소스가 X같으면, 프로젝트 진행이 어려워진다. 따라서 이런 팀단위 작업에는 가독성이 아주 중요시 된다.


③ 안전하다.

앞서 예를든 days에 대입될수 있는 값은 7개중 하나로 제한이 되기때문에 사용자의 실수를 컴파일러가 미리 예방해줄 수 있다. 따라서 변수형을 사용하는것보다 안전하다.


여기서 잠깐!

enum을 보다 효율적으로 사용하는 방법은

typedef를 사용하는 것이다.


바로 예부터 보자면...

typedef enum CDays {enum {mon, tue, wed, thr, fri, sat, sun };

이제 CDays는 하나의 타입으로 생성된 것이다.

CDays WhatDay(); 와 같이 오늘이 몇요일인지 리턴하는 함수를 작성 할 수도 있다.

CDays Day = WhatDay();

와 같이 Enum을 효과적으로 처리할 변수를 만들어 사용할 수 있다.


출처 : http://manjungs.blogspot.kr/2011/06/enum.html