반응형
연속적인 수를 가지는 상수들이 필요할 때 enum을 이용하면 편하다.
또한 #define을 연속해서 쓰는것보다 가독성에서도 유리하다.
enum
enum 이름{멤버1, 멤버2, ...};
enum Alphabet{
A = 0,
B,
C,
D
};
위와 같이 enum을 선언하면 enum의 멤버인 A, B, C, D는 각각 0, 1, 2, 3의 수를 가지는 상수가 된다. A를 0으로 선언했기 때문에 A 이후의 멤버들은 직전 멤버의 값에서 +1 된다.
#include <stdio.h>
enum Alphabet{
A = 0,
B,
C,
D
};
int main(){
printf("%d\r\n", A); // print : 0
printf("%d\r\n", B); // print : 1
printf("%d\r\n", C); // print : 2
printf("%d\r\n", D); // print : 3
}
'A = 0'대신 'A'로 쓰면 A는 0으로 자동 치환된다. 그러나 아직까지 'A'만 써준 경우는 못 봤으며 가독성 향상을 위해 다들 써주시는 것 같다.
#include <stdio.h>
enum Alphabet{
A,
B,
C,
D
};
int main(){
printf("%d\r\n", A); // print : 0
printf("%d\r\n", B); // print : 1
printf("%d\r\n", C); // print : 2
printf("%d\r\n", D); // print : 3
}
A를 4로 선언하면 A, B, C, D는 각각 4, 5, 6, 7이 된다.
#include <stdio.h>
enum Alphabet{
A = 4,
B,
C,
D
};
int main(){
printf("%d\r\n", A); // print : 4
printf("%d\r\n", B); // print : 5
printf("%d\r\n", C); // print : 6
printf("%d\r\n", D); // print : 7
}
값을 명시해주지 않은 상수만 직전 상수에서 +1 된다.
#include <stdio.h>
enum Alphabet{
A,
B,
C = 8,
D
};
int main(){
printf("%d\r\n", A); // print : 0
printf("%d\r\n", B); // print : 1
printf("%d\r\n", C); // print : 8
printf("%d\r\n", D); // print : 9
}
사용 예
함수의 리턴값 정의
enum Alphabet{
RET_SUCCESS = 0,
RET_EMPTY,
RET_OVERFLOW,
RET_UNDERFLOW
};
최근댓글