Menu
Coddy logo textTech

타입 별칭을 위한 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)하고 유지보수하기 쉽게 만들고 싶을 때 특히 유용합니다.

challenge icon

챌린지

쉬움

온도 모니터링 시스템을 위해 typedef를 사용하여 의미 있는 타입 별칭(type aliases)을 생성하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. typedef를 사용하여 다음 타입 별칭을 생성합니다:
    • float에 대한 타입 별칭 Temperature 생성
    • int에 대한 타입 별칭 SensorID 생성
    • int에 대한 타입 별칭 Status 생성
  2. 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 출력
      • 알림이 트리거되어야 하는지 확인합니다:
        • 현재 온도가 임계값보다 크고 AND 알림 상태가 1인 경우: Alert: Temperature exceeded threshold! 출력
        • 그렇지 않은 경우: Alert: No alert triggered 출력

이 챌린지는 typedef가 코드를 어떻게 더 자기 문서화(self-documenting)하고 이해하기 쉽게 만드는지 보여줍니다. 프로그램 전체에서 intfloat와 같은 일반적인 타입을 사용하는 대신, 각 변수의 목적을 명확하게 나타내는 SensorID, Temperature, Status와 같은 의미 있는 이름을 사용하게 됩니다. 이러한 접근 방식은 코드 가독성을 높이고 프로그램을 유지 관리하고 수정하기 쉽게 만듭니다.

직접 해보기

#include <stdio.h>

// TODO: 여기에 typedef 별칭을 생성하세요

int main() {
    // TODO: typedef 별칭을 사용하여 변수를 선언하세요
    
    // 입력 값 읽기
    scanf("%d", &sensor);
    scanf("%f", &currentTemp);
    scanf("%f", &threshold);
    scanf("%d", &alertStatus);
    
    // TODO: 센서 정보를 출력하고 분석을 수행하는 코드를 아래에 작성하세요
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨

직접 연습해 보세요: 온라인 C 컴파일러