통사론
열거 <열거형 이름> {Enumeration_Constant_Element-1,
Enumeration_Constant_Element-2,
Enumeration_Constant_Element-삼,
...........................,
Enumeration_Constant_Element-N,
};
Enumeration_Constant_Element-1의 기본값은 0, Enumeration_Constant_Element-2의 값은 1, Enumeration_Constant_Element-3의 값은 2, Enumeration_Constant_Element-n의 값은 (n-1)입니다.
Enum에 대해 자세히 알아보기
이제 열거형을 정의하는 구문을 알고 있으므로 예를 살펴보겠습니다.
열거오류{
IO_ERROR,
DISK_ERROR,
네트워크 오류
};
enum 키워드는 항상 열거 유형을 정의하는 데 사용해야 합니다. 따라서 열거형을 정의할 때마다 enum 키워드를 앞에 사용해야 합니다. enum 키워드 다음에 유효한 식별자를 사용하여 .
위의 예에서 컴파일러는 정수 값 0에 IO_ERROR, 정수 값 1에 DISK_ERROR, 정수 값 2에 NETWORK_ERROR를 할당합니다. 기본적으로 첫 번째 열거형 요소에는 항상 값 0이 할당되고 다음 열거형 요소에는 값이 할당됩니다. enum-element에는 값 1이 할당되는 식입니다.
이 기본 동작은 다음과 같이 상수 적분 값을 명시적으로 할당하여 필요한 경우 변경할 수 있습니다.
열거오류{IO_ERROR= 2,
DISK_ERROR,
네트워크 오류= 8 ,
PRINT_ERROR
};
이 경우 IO_ERROR는 프로그래머에 의해 명시적으로 2의 값에 할당되고 DISK_ERROR는 컴파일러에 의해 3의 값에 할당되며 NETWORK_ERROR는 프로그래머에 의해 명시적으로 8의 값에 할당되고 PRINT_ERROR는 다음 값에 할당됩니다. 컴파일러에 의한 이전 열거형 요소 NETWORK_ERROR(즉, 9)의 정수 값.
이제 C에서 사용자 정의 열거 유형을 정의하는 방법을 이해했습니다. 열거 유형의 변수를 선언하는 것이 가능합니까(정수 유형의 변수를 선언할 수 있는 것처럼)? 예, 그렇습니다! 열거형 변수는 다음과 같이 선언할 수 있습니다.
열거오류 Hw_Error;여기서도 enum은 키워드이고 Error는 열거형 유형이며 Hw_Error는 열거형 변수입니다.
이제 enum의 다양한 사용법을 이해하기 위해 다음 예제를 살펴보겠습니다.
- 예 1: 기본 열거형 정의 사용
- 예 2: 사용자 지정 열거형 정의 사용
- 예 3: 상수 표현식을 사용한 열거형 정의
- 예 4: 열거형 범위
예 1: 기본 열거형 정의 사용
이 예에서는 기본 상수 값으로 열거형을 정의하는 방법을 배웁니다. 컴파일러는 열거형 요소에 기본값을 할당합니다. 아래에서 예제 프로그램과 해당 출력을 볼 수 있습니다.
#포함하다/* 열거형 정의 */
열거오류{
IO_ERROR,
DISK_ERROR,
네트워크 오류
};
정수기본()
{
열거오류 Hw_Error; /* 열거형 변수 생성*/
인쇄 ('Hw_Error를 IO_ERROR로 설정N');
Hw_Error=IO_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 DISK_ERROR로 설정N');
Hw_Error=DISK_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 NETWORK_ERROR로 설정N');
Hw_Error=네트워크 오류;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
반품 0;
}
예 2: 사용자 지정 열거형 정의 사용
이 예에서는 사용자 정의 상수 값으로 열거형을 정의하는 방법을 배웁니다. 또한 이 예제는 사용자 정의 상수 초기화가 임의의 순서로 수행될 수 있는 방법을 이해하는 데 도움이 됩니다. 이 예에서는 1에 대한 상수 값을 명시적으로 정의했습니다.성그리고 3rdenum 요소(각각 IO_ERROR 및 NETWORK_ERROR)가 있지만 2에 대한 명시적 초기화를 건너뛰었습니다.NS그리고 4NS집단. 이제 기본값을 2에 할당하는 것은 컴파일러의 책임입니다.NS그리고 4NSenum 요소(즉, 각각 DISK_ERROR 및 PRINT_ERROR). DISK_ERROR는 값 3에 할당되고 PRINT_ERROR는 값 9에 할당됩니다. 아래에서 예제 프로그램과 출력을 볼 수 있습니다.
#포함하다/* 열거형 정의 - 사용자 정의 초기화*/
열거오류{
IO_ERROR= 2,
DISK_ERROR,
네트워크 오류= 8,
PRINT_ERROR
};
정수기본()
{
/* 열거형 변수 선언*/
열거오류 Hw_Error;
인쇄 ('Hw_Error를 IO_ERROR로 설정N');
Hw_Error=IO_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 DISK_ERROR로 설정N');
Hw_Error=DISK_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 NETWORK_ERROR로 설정N');
Hw_Error=네트워크 오류;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 PRINT_ERROR로 설정N');
Hw_Error=PRINT_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
반품 0;
}
예제 3: 상수 표현식을 사용한 열거형 정의
이 예제에서는 상수 표현식을 사용하여 열거형 요소에 대한 상수 값을 정의하는 방법을 배웁니다.
#포함하다/* 열거형 정의 - 상수 표현식을 사용한 사용자 정의 초기화
상수 표현식은 다음과 같은 경우에 사용됩니다.
NS. IO_ERROR 및
NS. 네트워크 오류
이것은 enum 요소를 정의하는 특이한 방법입니다. 그러나, 이
프로그램은 이러한 방식의 열거형 요소 초기화가 c에서 가능함을 보여줍니다.
* /
열거오류{
IO_ERROR= 1 + 2 * 삼 + 4,
DISK_ERROR,
네트워크 오류= 2 == 2,
PRINT_ERROR
};
정수기본()
{
/* 열거형 변수 선언*/
열거오류 Hw_Error;
인쇄 ('Hw_Error를 IO_ERROR로 설정N');
Hw_Error=IO_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 DISK_ERROR로 설정N');
Hw_Error=DISK_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 NETWORK_ERROR로 설정N');
Hw_Error=네트워크 오류;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 PRINT_ERROR로 설정N');
Hw_Error=PRINT_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
반품 0;
}
예 4: 열거형 범위
이 예에서는 enum에 대해 범위 지정 규칙이 작동하는 방식을 배웁니다. MACRO(#define)를 사용하여 열거형 대신 상수를 정의할 수 있었지만 범위 지정 규칙은 MACRO에 대해 작동하지 않습니다.
#포함하다정수기본()
{
/* 열거형 정의 */
열거오류_1{
IO_ERROR= 10,
DISK_ERROR,
네트워크 오류= 삼,
PRINT_ERROR
};
{
/* 내부 범위에서 열거형 유형 정의*/
열거오류_1{
IO_ERROR= 스물,
DISK_ERROR,
네트워크 오류= 35,
PRINT_ERROR
};
/* 열거형 변수 선언*/
열거Error_1 Hw_Error;
인쇄 ('Hw_Error를 IO_ERROR로 설정N');
Hw_Error=IO_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 DISK_ERROR로 설정N');
Hw_Error=DISK_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 NETWORK_ERROR로 설정N');
Hw_Error=네트워크 오류;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
인쇄 ('NHw_Error를 PRINT_ERROR로 설정N');
Hw_Error=PRINT_ERROR;
인쇄 ('Hw_Error 값 = %dN',Hw_Error);
}
반품 0;
}
열거형과 매크로의 비교
열거 | 매크로 |
enum에 범위 지정 규칙이 적용됩니다. | 매크로에는 범위 지정 규칙이 적용되지 않습니다. |
기본 Enum 값 할당은 자동으로 발생합니다. 열거형은 많은 수의 상수를 정의하는 데 매우 유용합니다. 컴파일러는 기본 상수 값 초기화를 사용합니다. | 매크로 상수 값은 항상 프로그래머가 명시적으로 언급해야 합니다. 매크로를 정의하는 동안 프로그래머는 항상 각 상수 값을 수동으로 정의해야 하기 때문에 이것은 많은 수의 상수에 대해 지루한 프로세스가 될 수 있습니다. |
결론
C의 열거형 프로그램은 프로그래머가 항상 열거형 대신 매크로를 사용할 수 있기 때문에 독립 실행형 프로그램이나 소규모 프로젝트에 대한 선택적 방법으로 간주될 수 있습니다. 그러나 숙련된 프로그래머는 대규모 소프트웨어 개발 프로젝트에서 매크로보다 열거형을 사용하는 경향이 있습니다. 이것은 깨끗하고 읽기 쉬운 프로그램을 작성하는 데 도움이 됩니다.