본문 바로가기
개념/혼자 공부하는 C언어

chapter 19) 다양한 메크로명 사용

by kiseno 2024. 10. 19.
728x90
반응형
SMALL
#include <stdio.h>
#define PI 3.14159
#define LIMIT 100.0
#define MSG "passed!"
#define ERR_PRN printf("exit of range pass!\n")

int main(void){
    double radius, area;
    printf("input radius (under 10) : ");
    scanf("%lf", &radius);
    area = PI * radius * radius;
    if (area > LIMIT) ERR_PRN;
    else printf("circle area : %.2lf (%s)\n", area, MSG);

    return 0;
}

 

### 코드의 주요 부분 설명

- `#define PI 3.14159`은 원주율 PI의 값을 정의하는 매크로입니다.
- `#define LIMIT 100.0`은 면적의 상한값을 정의하는 매크로입니다. 이 예제에서는 원의 면적이 100을 초과하는 경우 특정 조치를 취합니다.
- `#define MSG "passed!"`는 면적이 상한값 이하일 때 출력할 메시지를 정의하는 매크로입니다.
- `#define ERR_PRN printf("exit of range pass!\n")`는 면적이 상한값을 초과했을 때 출력할 메시지를 위한 매크로입니다. 이 매크로는 `printf` 함수 호출을 포함하고 있습니다.

### 프로그램의 실행 흐름

1. 사용자로부터 원의 반지름을 입력받습니다. 입력은 `scanf("%lf", &radius);`를 통해 이루어집니다.
2. 입력받은 반지름을 사용하여 원의 면적을 계산합니다. 면적 계산에는 `area = PI * radius * radius;` 공식이 사용됩니다.
3. 계산된 면적이 `LIMIT` (이 예제에서는 100.0)을 초과하는지 확인합니다. 면적이 상한값을 초과하면 `ERR_PRN;` 매크로가 호출되어 "exit of range pass!\n" 메시지가 출력됩니다.
4. 면적이 상한값 이하인 경우, 원의 면적과 "passed!" 메시지가 출력됩니다. 출력에는 `printf("circle area : %.2lf (%s)\n", area, MSG);`가 사용됩니다.

### 주의

프로그램에서 요구하는 반지름 입력은 "under 10"으로, 사용자에게 반지름 10 이하의 값을 입력하라는 안내가 있습니다. 하지만, 실제로는 입력받은 반지름의 면적이 `LIMIT`을 초과하는지만 검사하며, 반지름 자체의 크기 제한은 코드에 구현되어 있지 않습니다. 사용자가 매우 큰 반지름을 입력할 경우, 계산된 면적이 `LIMIT`을 초과하여 "exit of range pass!\n" 메시지가 출력됩니다.

728x90
반응형
LIST