변환 및 열거 형식
모든 열거자가 열거 형식은 정수 계열 형식 이므로 정수 계열 확장에서 다른 정수 계열 형식으로 변환할 수 있습니다.다음 예제를 고려해 보십시오.
// enumerated_types.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
enum Days
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
int i;
Days d = Thursday;
int main()
{
i = d; // Converted by integral promotion.
cout << "i = " << i << "\n";
}
Output
i = 4
다른 정수 계열 형식에서 열거 형식으로의 암시적 변환은 없습니다입니다.따라서 다음 문을 오류가 있습니다 (앞의 예제로 계속).
d = 6; // Erroneous attempt to set d to Saturday.
암시적 변환이 존재 하는 경우 배정에는 이러한 변환을 수행 하려면 캐스트를 사용 해야 합니다.
d = (Days)6; // Explicit cast-style conversion to type Days.
d = Days( 4 ); // Explicit function-style conversion to type Days.
앞의 예제는 열거자와 일치 하는 값의 변환을 보여 줍니다.일치 하지 않는 값 열거자 중 하나에 변환 보호 메커니즘이입니다.예를 들면 다음과 같습니다.
d = Days( 967 );
일부 이러한 변환이 작동 하지 않을 수 있습니다.그러나 결과 값은 열거자 중 하나 된다는 보장은 없습니다 있습니다.열거자의 크기 변환 되는 값을 저장 하는 것이 너무 작은 경우 또한 저장 값 예상 수 없습니다.