TeamH4C_ProjectH4C/프로그래밍 언어

[TeamH4C_C언어] 열거형과 자료형 변환

P4P3R_H 2021. 4. 11. 16:45

이번에는 코딩도장 Unit57과 Unit58에 설명되어 있는 열거형 사용과 자료형 변환에 대해 정리해보겠습니다.

열거형 사용 enum사용
switch문 결합 사용
for문 결합 사용
자료형 변환 기본 자료형 변환
포인터 자료형 변환
구조체 자료형 변환

 

열거형 사용

열거형은 정수형 상수에 이름을 붙여 개수가 많더라도 편리하게 해 주도록 합니다. enum키워드를 사용하며 enumeration의 약자입니다.

enum 열거형이름 {
    값1 = 초깃값,
    값2,
    값3
};

[enum 열거형이름 변수이름;]으로 변수를 선언해야 사용이 가능하며 아래에 내려오는 값들은 1씩 증가하여 자동으로 초기값이 할당됩니다. 초기값을 할당하지 않으면 0부터 시작하는 규칙이 있습니다.

열거형의 값들은 대문자만 이용하는 경우가 많고 단어 사이에는 _를 사용하여 구분하며 초기값을 일일이 설정하여 할당할 수 있습니다.

typedef로 별칭을 지정하고 익명 열거형으로 정의할 수 있는데 세미콜론(;) 앞에 열거형 별칭을 이용하면 됩니다. 열거형 별칭을 사용하면 변수를 사용할 때 [열거형별칭 변수이름;]으로 사용하면 됩니다. 별칭 대신 변수로 선언하여 사용하여도 됩니다.

열거형은 switch분기문을 사용하여 특정 값일 때 코드를 실행하도록 할 수 있습니다. 또한, for문을 이용하여 해당 값들을 반복하여 초기값들을 확인할 수 있도록 할 수 있습니다.

 

자료형 변환

자료형 변환은 표현 범위가 넓은 쪽으로 저장하면 자동으로 변환되어 저장됩니다. 이것을 형 확장이라 하며, 반대인 경우인 형 축소 시 경고가 나오게 되는데 경고가 나오지 않도록 만드는 것을 형 변환(type conversion, type casting, 타입 캐스팅)이라고 합니다.

강제로 형 변환하는 것은 명시적 형 변환(explicit type conversion)이라 부르기도 합니다. 아래와 같이 자료형을 지정하여 명시적 자료형 변환을 시킬 수 있습니다.

(자료형)변수
(자료형)값

포인터의 자료형을 변환할 때는 [(자료형 *)포인터] 형식으로 해주면 됩니다. 대신 리틀 엔디언 방식으로 저장되기에 크기가 작은 자료형으로 가져오게 되면 원하는 값을 가져오지 못하게 됩니다. 역참조 시 [*(자료형 *)포인터]로 해주면 됩니다.

여기서 void 포인터는 자료형이 정해져 있지 않아 역참조 연산을 사용할 수 없지만, void포인터를 다른 자료형으로 변환하면 역참조가 가능해집니다.

 

자료형 변환을 주로 구조체 포인터를 변환할 때 사용하는데 struct와 구조체 이름 뒤에 *을 붙여 괄호로 묶어주면 됩니다.

(struct 구조체이름 *)포인터
((struct 구조체이름 *)포인터)->멤버

구조체 포인터는 [(구조체별칭 *)포인터, ((구조체별칭 *)포인터)->멤버, (구조체포인터별칭)포인터, ((구조체포인터별칭)포인터)->멤버]를 사용하여 변환할 수 있습니다.