안녕하세요~ 뉴기니아 입니다!
오늘은 enum자료형에 대해서 알아보겠습니다.
enum 이란?
- 열거형이란 데이터를 일정한 관계에 따라서 쭈욱 나열한 형태를 말합니다.
이게 도대체 무슨 말이냐면 예를들어 메뉴 고르기 프로그램이 있다고 칩니다.
보통이면 int a = 0을 해서
조건문을 이용하여,
a = 0 → 삽입
a = 1 → 삭제
a = 2 → 출력
으로 구성할 것입니다.
하지만 0, 1, 2는 한눈에 뭐가 뭔지 알아보기 힘듭니다.
따라서 코드 가독성을 좋게하고 디버깅을 수월하게 하기 위해서 enum을 사용합니다.
제가 선언한 enum 구조체 안에는 다음과 같은 멤버가 있습니다.
여기서 선언할 때 콤마(,)로 선언해주시는 거 잊지마시고 마지막에는 콤마(,)가 없다는 것도 유의해주세요!
MM_NONE,
MM_INSERT,
MM_DELETE,
MM_PRINT,
MM_EXIT
각 변수에 마우스 커서를 대시면 각 변수가 갖는 값들이 출력됩니다
여기서 열거형의 특성이 나타납니다.
제일 첫 번째로 선언한 변수는 무조건 값 0을 가집니다.
그 뒤로 콤마를 쓰게 되면 +1을 하면서 번호가 할당되게 됩니다.
하지만 나는 제일 첫 번째 0 싫은데? 하시는 분들은
이렇게 MM_NONE = 2처럼 첫 숫자를 할당해줄 수 있습니다.
실제 코드를 통해서 이게 어떻게 동작하는지 봅시다
main문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <iostream>
using namespace std;
int main()
{
int choice = 0;
do
{
cout << "1. 데이터 삽입" << endl;
cout << "2. 데이터 삭제" << endl;
cout << "3. 데이터 출력" << endl;
cout << "4. 프로그램 종료" << endl;
cout << " : ";
cin >> choice;
if (choice == 4) return 0;
} while (choice < 1 || choice > 3);
return 0;
}
|
cs |
어떤 코드인 지 감이 오시나요?
사용자로부터 1~4까지의 값을 입력으로 받고 choice에 저장합니다.
다음 코드를 보실까요?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
int main()
{
int choice = 0;
do
{
cout << "1. 데이터 삽입" << endl;
cout << "2. 데이터 삭제" << endl;
cout << "3. 데이터 출력" << endl;
cout << "4. 프로그램 종료" << endl;
cout << " : ";
cin >> choice;
if (choice == 4) return 0;
system("cls");
} while (choice < 1 || choice > 3);
switch (choice)
{
case 1:
cout << "삽입!" << endl;
break;
case 2:
cout << "삭제!" << endl;
break;
case 3:
cout << "출력" << endl;
break;
default:
break;
}
return 0;
}
|
cs |
아래 쪽 switch 문을 주목해서 보시기 바랍니다.
choice의 결과에 따라서 '삽입', '삭제', '출력' 중 한 문구를 출력하는 함수입니다.
하지만 프로그램을 딱 봤을 때는 case 1이 무엇을 뜻하는 지는 작성한 사람 말고는 잘 모르겠죠?
여기서 아까 선언한 enum을 사용할겁니다 ㅎㅎ
※ MM은 제가 임의로 정한 main menu의 약자입니다
자 코드가 어떠신가요?
choice의 값에 따라서 각각 어떤 역할을 수행할 지 직관적으로 파악이 가능해졌습니다!
추가로 처음 choice 값을 받을 때
빨간색 네모친 부분에서 4를 또 enum을 이용하여
아래 사진처럼 표현이 가능합니다!
여기까지가 enum에 대한 설명이었습니다
'💻 Computer Science > C,C++' 카테고리의 다른 글
[C++] 알고리즘 수행 시간 측정 (0) | 2024.02.21 |
---|---|
[C++] 코딩테스트 때 자주 사용하는 STL 및 알고리즘 정리 (2) | 2024.02.20 |
[C++] 반올림, 올림, 내림, 버림 (0) | 2021.01.24 |
[C++] 소숫점 표현하기(유효숫자) (0) | 2021.01.24 |
[C++] 13강 구조체 (0) | 2021.01.20 |