C 열거형 선언
열거형의 명명 된 정수 상수 집합으로 구성 됩니다.열거 형식 선언 (옵션) 열거 태그의 이름을 제공 하 고 일련의 명명 된 정수 식별자를 정의 (은 "열거형"열거자 상수를 "설정," 라는 "표시기" 또는 "멤버").열거형 형식 사용 하 여 변수 값을 해당 형식으로 정의 된 열거형 집합 중 하나를 저장 합니다.
변수는 enum 형식의 인덱싱 식 하 고 모든 산술 및 관계 연산자의 피연산자로 사용할 수 있습니다.제공 하는 대신 열거형의 #define 전처리기 지시문 값을 생성할 수 있습니다 하 고 정상적인 범위 지정 규칙을 따르는 장점으로.
ANSI C에서는 항상 열거자 상수 값을 정의 하는 식이 있는 int 를 입력 합니다. 따라서 열거형 변수와 연결 저장소 하나에 필요한 저장 됩니다 int 값입니다.열거형 상수 또는 열거형된 형식의 값을 사용할 수 있습니다 아무 곳 이나 C 언어는 정수 식을 사용할 수 있습니다.
구문
enum 지정 자가:
enum identifier opt**{** enumerator-list }열거형 식별자
선택적인 식별자 에 의해 정의 된 열거형 형식의 이름을 지정 열거자 목록.이 id는 목록에서 지정 된 열거형의 "태그" 라고도 합니다.폼의 형식 지정자
enum identifier { enumerator-list }
선언 식별자 태그를 지정 하는 열거형에는 열거자 목록 비 단말 이름입니다.해당 열거자 목록 "열거자 내용"를 정의 합니다. 해당 열거자 목록 아래에 자세히 설명 되어 있습니다.
선언 태그에는 태그를 사용 하지만 생략 선언 이후, 표시 되는 경우 열거자 목록 이전에 선언 된 열거형된 형식을 지정 합니다.태그에 정의 된 열거형을 참조 해야 하 고 해당 열거형 형식을 현재 범위에 있어야 합니다.열거형 형식을 다른 위치에 정의 되어 있기 때문에 열거자 목록 이 선언에서 나타나지 않습니다.파생 된 열거형의 형식 선언을 하 고 typedef 열거형에 대 한 선언을 열거형 형식을 정의 되기 전에 열거 태그 사용할 수 있습니다.
구문
열거자 목록:
열거자열거자 목록**,**enumerator
enumerator:
열거 상수열거형 상수 = 상수 식
열거형 상수:
identifier
각 열거형 상수 에 있는 열거형 목록 값 열거 집합의 이름을 지정 합니다.기본적으로 첫 번째 열거형 상수 0 값과 연결 됩니다.다음 열거형 상수 목록에 값을 연결 된 ( 상수 식 + 1), 명시적으로 다른 값으로 연결 하지 않는 한.이름에 열거형 상수 값에 해당 하.
사용할 수 있습니다 열거형 상수 상수 식 = 기본 시퀀스의 값을 재정의할 수 있습니다.따라서 경우 열거형 상수 상수 식 = 표시는 열거자 목록에서 열거형 상수 의해 지정 된 값에 연결 된 상수 식.해당 상수 식 있어야 합니다 int 를 입력 하 고 음수가 될 수 있습니다.
다음 규칙 열거 집합의 구성원에 적용 됩니다.
열거형 집합 상수 중복 값을 포함할 수 있습니다.예를 들어, 아마도 라는 0 값 가진 두 개의 식별자를 연결할 수 null 및 zero, 동일한 집합에 있습니다.
식별자를 열거형 목록에 다른 열거형 목록에 일반 변수 이름과 식별자를 포함 하 여 동일한 표시 여부와 같은 범위 내의 다른 식별자에서 구별 되어야 합니다.
태그 열거형 범위 지정 규칙을 지켜 주세요.가 구별에서 다른 열거형, 구조체 및 공용 구조체 태그와 동일 하 게 표시 되어야 합니다.
예제
열거형 선언은 이러한 예를 보여 줍니다.
enum DAY /* Defines an enumeration type */
{
saturday, /* Names day and declares a */
sunday = 0, /* variable named workday with */
monday, /* that type */
tuesday,
wednesday, /* wednesday is associated with 3 */
thursday,
friday
} workday;
0 값이 연관 된 saturday 기본으로 합니다.식별자 sunday 명시적으로 0으로 설정 됩니다.나머지 식별자의 값은 1에서 5 기본적으로 제공 됩니다.
이 예제에서는 값의 집합에서 DAY 는 변수에 할당 된 today.
enum DAY today = wednesday;
Note 이름을 열거형 상수 값을 지정할 수 있습니다.이후에 DAY 열거형 된 미리 선언, 열거 태그 DAY 필요 합니다.
열거형된 데이터 형식의 변수에 정수 값을 명시적으로 할당 형식 캐스팅을 사용 하십시오.
workday = ( enum DAY ) ( day_value - 1 );
이 캐스팅에서 C 좋지만 필요 하지 않습니다.
enum BOOLEAN /* Declares an enumeration data type called BOOLEAN */
{
false, /* false = 0, true = 1 */
true
};
enum BOOLEAN end_flag, match_flag; /* Two variables of type BOOLEAN */
이 선언으로 지정할 수 있습니다.
enum BOOLEAN { false, true } end_flag, match_flag;\
나 처럼
enum BOOLEAN { false, true } end_flag;
enum BOOLEAN match_flag;
이러한 변수를 사용 하는 예는 다음과 같습니다.
if ( match_flag == false )
{
.
. /* statement */
.
}
end_flag = true;
또한 열거자 이름 없는 데이터 형식은 선언할 수 있습니다.데이터 형식의 이름을 생략 하 고 있지만 변수를 선언할 수 있습니다.변수 response 정의 된 형식의 변수입니다.
enum { yes, no } response;