Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 두 수의 합 구하기 – 정수와 실수 덧셈 프로그램

문제 개요

두 개의 정수형 변수 a, b와 두 개의 실수형(float) 변수 c, d가 있다고 가정해 봅시다. 우리는 a와 b의 합, c와 d의 합을 각각 구해야 하며, 추가로 정수와 실수를 섞어 a와 c의 합도 계산해야 합니다. 이때 printf 함수에서 어떤 서식 지정자(format specifier)를 사용하느냐에 따라 출력 결과가 달라질 수 있습니다.

예를 들어 입력이 a = 5, b = 58, c = 6.32, d = 8.64라고 하면, 출력은 다음과 같습니다.

  • a + b = 63
  • c + d = 14.960001
  • a + c = 11.320000

해결 접근 방법

이 문제는 다음 단계에 따라 해결할 수 있습니다.

  • a + b 출력: 두 변수 모두 정수형(int)이므로 printf("%d")를 사용하면 됩니다.
  • c + d 출력: 두 변수 모두 실수형(float)이므로 printf("%f")를 사용하면 됩니다.

a + c 출력의 경우가 중요합니다. 하나는 정수형이고 다른 하나는 실수형입니다. C 언어에서는 정수와 실수를 연산할 때 자동 형 변환(implicit type promotion)이 일어나 정수가 실수로 승격되어 계산되기 때문에, 올바른 결과를 얻으려면 반드시 printf("%f")를 사용해야 합니다. 만약 %d를 사용하면 잘못된 값이 출력됩니다.

예제 코드

다음 구현 예제를 통해 더 자세히 이해해 보겠습니다.

#include <stdio.h>
int main(){
    int a = 5, b = 58;
    float c = 6.32, d = 8.64;
    printf("a + b = %d\n", a + b);
    printf("c + d = %f\n", c + d);
    printf("a + c = %f\n", a + c);
}

입력

a = 5, b = 58;
c = 6.32, d = 8.64;

출력

a + b = 63
c + d = 14.960001
a + c = 11.320000

참고: 부동소수점 오차

출력 결과에서 c + d가 14.96이 아닌 14.960001로 표시된 것을 볼 수 있습니다. 이는 컴퓨터가 실수를 2진법 부동소수점 방식으로 저장하기 때문에 발생하는 미세한 오차입니다. float 타입은 유효숫자 약 7자리까지만 정확하게 표현할 수 있으며, 더 높은 정밀도가 필요하다면 double 타입을 사용하는 것이 좋습니다.