타입 별칭을 위한 typedef 사용
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨. 63개 중 58번째.
C 프로그래밍을 하다 보면, 기존 데이터 타입의 이름이 너무 길거나 프로그램의 의도를 명확하게 표현하지 못하는 상황을 마주하게 될 때가 있습니다. typedef 키워드는 기존 데이터 타입에 새로운 이름을 부여할 수 있게 함으로써 이에 대한 해결책을 제공합니다.
typedef를 데이터 타입에 대한 별칭이나 닉네임을 만드는 것이라고 생각하세요. 기본 구문은 간단합니다:
typedef existing_type new_name;예를 들어, int 데이터 타입에 대해 더 설명적인 이름을 생성할 수 있습니다:
typedef int Integer;이 선언 이후에는 보통 int를 사용하는 모든 곳에서 Integer를 사용할 수 있습니다. int count = 5;와 Integer count = 5;는 모두 정확히 동일한 작업을 수행하지만, 특정 상황에서는 두 번째 버전이 더 의미가 있을 수 있습니다.
이 기능은 복잡한 데이터 타입을 다룰 때나 코드를 더 자기 문서화(self-documenting)하고 유지보수하기 쉽게 만들고 싶을 때 특히 유용합니다.
챌린지
쉬움온도 모니터링 시스템을 위해 typedef를 사용하여 의미 있는 타입 별칭(type aliases)을 생성하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
typedef를 사용하여 다음 타입 별칭을 생성합니다:float에 대한 타입 별칭Temperature생성int에 대한 타입 별칭SensorID생성int에 대한 타입 별칭Status생성
- main 함수에서:
SensorID타입의 변수sensor를 선언합니다.Temperature타입의 변수currentTemp를 선언합니다.Temperature타입의 변수threshold를 선언합니다.Status타입의 변수alertStatus를 선언합니다.- 입력으로부터 센서 ID, 현재 온도, 임계값 온도, 알림 상태 순서로 네 개의 값을 읽습니다.
- 이 입력 값들을 해당 변수에 할당합니다.
- 센서 정보를 다음 형식으로 정확히 출력합니다:
Sensor ID: [sensor_id]Current Temperature: [current_temp]Threshold: [threshold_temp]Alert Status: [alert_status]
- 온도 분석을 수행하고 결과를 출력합니다:
- 온도 차이(현재 온도에서 임계값을 뺀 값)를 계산하여
Temperature타입의 변수difference에 저장합니다. - 차이를 다음 형식으로 정확히 출력합니다:
Temperature Difference: [difference] - 현재 온도를 기준으로 온도 카테고리를 결정합니다:
- 온도가 0.0 미만인 경우:
Category: Freezing출력 - 온도가 0.0 이상 25.0 이하인 경우:
Category: Normal출력 - 온도가 25.0 초과인 경우:
Category: Hot출력
- 온도가 0.0 미만인 경우:
- 알림이 트리거되어야 하는지 확인합니다:
- 현재 온도가 임계값보다 크고 AND 알림 상태가 1인 경우:
Alert: Temperature exceeded threshold!출력 - 그렇지 않은 경우:
Alert: No alert triggered출력
- 현재 온도가 임계값보다 크고 AND 알림 상태가 1인 경우:
- 온도 차이(현재 온도에서 임계값을 뺀 값)를 계산하여
이 챌린지는 typedef가 코드를 어떻게 더 자기 문서화(self-documenting)하고 이해하기 쉽게 만드는지 보여줍니다. 프로그램 전체에서 int 및 float와 같은 일반적인 타입을 사용하는 대신, 각 변수의 목적을 명확하게 나타내는 SensorID, Temperature, Status와 같은 의미 있는 이름을 사용하게 됩니다. 이러한 접근 방식은 코드 가독성을 높이고 프로그램을 유지 관리하고 수정하기 쉽게 만듭니다.
직접 해보기
#include <stdio.h>
// TODO: 여기에 typedef 별칭을 생성하세요
int main() {
// TODO: typedef 별칭을 사용하여 변수를 선언하세요
// 입력 값 읽기
scanf("%d", &sensor);
scanf("%f", ¤tTemp);
scanf("%f", &threshold);
scanf("%d", &alertStatus);
// TODO: 센서 정보를 출력하고 분석을 수행하는 코드를 아래에 작성하세요
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Logic & Flow의 모든 레슨
10열거형(Enum)과 Typedef
명명된 상수를 위한 enum열거형(Enum) 선언과 사용Switch 문에서의 열거형(Enum) 활용타입 별칭을 위한 typedef 사용구조체와 typedef요약: Typedef와 열거형(Enum) 실습직접 연습해 보세요: 온라인 C 컴파일러