목차

II-1. 산술 연산자

산술 연산자를 이용하는 방법을 알아봅시다. 산술 연산자에는 다섯가지 종류가 있는데, 각각 +(덧셈), -(뺄셈), *(곱셈), /(나눗셈), %(나머지) 연산입니다. 다음 코드의 출력결과를 한 번 생각해보세요.

#include <stdio.h>

int main()
{
    int num1 = 5;
    int num2 = 8;
    printf("%d\\n", num1 + num2);
    printf("%d\\n", num1 - num2);
    printf("%d\\n", num1 * num2);
    printf("%d\\n", num1 / num2);
    printf("%d", num1 % num2);
    return 0;
}
13
-3
40
0
5

직접 머릿속으로 계산해도 같은 결과가 나오나요?

아마 한가지 정도를 빼면 동일하게 나왔을 것입니다. 산술 연산자에는 조금 주의해야 할 연산이 세가지 존재합니다. 바로 *(곱셈), /(나눗셈), %(나머지) 연산입니다. 잠시 이해를 위해 코드의 다른 부분은 생략해봅시다.

int num1 = 5;
int num2 = 8;
printf("%d", num1 / num2);
0

일반적으로 5를 8로 나누면 정수 범위에서는 몫이 0이지만 실수 범위에서는 0.625입니다. 실행값이 0이 나온 이유는 정수를 정수로 나누어서 그 출력값 또한 정수가 되기 때문입니다.

마찬가지 이유로 곱셈 또한 정수범위에서는 소숫점 부분이 무시됩니다. 그렇다면 실수 범위에서 연산을 진행하려면 어떻게 할까요?

double num1 = 5;
double num2 = 8;
printf("%lf", num1 / num2);
0.625000

답은 간단합니다. 실수형 자료형을 사용하면 됩니다. (형식지정자도 바꿔야하니 주의하세요) 그런데 몇몇 상황에서는 정수와 정수를 나눈 값을 실수로 출력해야할 상황도 존재합니다. 그럴떄는 어떻게 할까요?

int num1 = 5;
int num2 = 8;
printf("%lf", (double)num1 / num2);
0.625000

이렇게 바꾸고 싶은 자료형을 앞에 붙여주면 됩니다. 이런 방식을 임시 형변환이라고 합니다.

<aside> 💡 참고 : 정수형 나눗셈에서 0으로 나누면 오류가 발생하고, 실수형 나눗셈에서 0으로 나누면 무한대가 출력됩니다.

</aside>