C언어 - 열거형(enumeration)

2022. 12. 11. 13:53·C프로그래밍/개인 공부

열거형(enumeration)이란 변수가 가질 수 있는 값들을 나열해 놓은 자료형이다.

즉, 변수가 가질수 있는 상수값들을 나열해 놓은 자료형. 열거형으로 선언된 변수는 나열된 변수만 가질 수 있다.

예를 들어서, 요일을 나타내는 변수를 d라고 했을때, d는 월, 화, 수, 목, 금, 토, 일 만을 변수로 가질 수 있다.

 

그렇다면 열거형은 왜 쓰는가?

방금 전의 예처럼 월요일은 0, 화요일은 1, 수요일은 2 이런식으로 나타낼 수 있지만, 이렇게 하게 된다면 오류의 가능성, 가독성이 좋지않은 문제가 있다. 그렇기 때문에 MON, TUE, WED처럼 기호상수로 정의하는게 바람직하다고 볼 수 있다.


그렇다면 열거형을 한번 정의해보자.

예를 들어 요일을 나타내는 열거형을 정의해보면,

 

1
2
3
4
5
6
7
8
9
enum days {
    SUN,
    MON,
    TUE,
    WED,
    THU,
    FRI,
    SAT
};
cs

이렇게 정의할 수 있다.

그리고 이 열거형을 가지는 변수를 선언해보자.

 

1
2
3
4
5
6
7
8
9
10
11
enum days {
   SUN, //0
   MON, //1
   TUE, //2
   WED, //3
   THU, //4
   FRI, //5
   SAT //6
};
 
enum days d;
cs

days라는 열거형을 가지는 변수 d를 선언했다.

기호상수는 차례로 0, 1, 2, .. 증가하는 값을 가진다.

 

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
enum days {MON, TUE, WED, THU, FRI, SAT, SUN};
 
int main(void)
{
    enum days d;
    d = WED;
    printf("%d\n", d);
 
    return 0;
}
Colored by Color Scripter
cs

열거형 days를 가지는 변수 d를 선언한 후에, d에 WED기호상수를 넣는다. 0부터 시작한다 했으니 WED는 2값을 가진다.

 

결과

 

'C프로그래밍 > 개인 공부' 카테고리의 다른 글

C언어 - 연결리스트  (0) 2022.12.20
C언어 - 동적 메모리  (0) 2022.12.14
C언어 - 구조체와 함수  (0) 2022.12.11
C언어 - 구조체안에 문자배열? or 문자형을 가르키는 포인터?  (0) 2022.12.11
C언어 - 구조체와 포인터  (0) 2022.12.10
'C프로그래밍/개인 공부' 카테고리의 다른 글
  • C언어 - 연결리스트
  • C언어 - 동적 메모리
  • C언어 - 구조체와 함수
  • C언어 - 구조체안에 문자배열? or 문자형을 가르키는 포인터?
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    commit
    스택
    시스템콜
    이진 트리
    리눅스
    Git
    INIT
    arm
    드라이버 분석
    rubikpi3
    커널 기여
    커널
    소수
    자료구조
    yolo
    앤드류모튼
    토발즈
    C++
    피보나치
    Branch
    rubik pi
    동적메모리
    파이썬
    버퍼
    Qualcomm
    파일 입출력
    순환
    포인터
    c언어
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
C언어 - 열거형(enumeration)
상단으로

티스토리툴바