[C언어][초급] Chapter15. 산술 연산자 – 사칙연산을 코드로 표현해보자
프로그래밍에서도 덧셈, 뺄셈, 곱셈, 나눗셈 같은 기본적인 수학 계산은 자주 사용됩니다.
C언어에서는 이러한 계산을 수행하기 위해 **산술 연산자(Arithmetic Operators)**를 제공합니다.
이번 글에서는 산술 연산자의 종류와 사용법, 그리고 주의할 점까지 초보자가 꼭 알아야 할 내용을 정리해볼게요.
● 산술 연산자란?
산술 연산자는 숫자끼리의 계산을 수행하는 기호입니다.
C언어에서 사용하는 대표적인 산술 연산자는 다음과 같습니다:
연산자 | 의미 | 예시 | 코드결과 |
+ | 덧셈 | 3 + 2 | 5 |
- | 뺄셈 | 5 - 1 | 4 |
* | 곱셈 | 4 * 2 | 8 |
/ | 나눗셈 | 10 / 2 | 5 |
% | 나머지 | 7 % 3 | 1 |
● 각 연산자 간단 설명
▸ 덧셈 +, 뺄셈 -
가장 기본적인 연산으로, 정수형, 실수형 모두 사용 가능합니다.
int a = 3 + 4; // a = 7
float b = 5.5 - 2; // b = 3.5
▸ 곱셈 *
별표 기호 *는 곱셈을 나타냅니다.
int x = 6 * 3; // x = 18
▸ 나눗셈 /
정수형끼리 나누면 소수점 이하는 버려지고,
실수형이 하나라도 포함되면 소수점까지 계산됩니다.
int a = 5 / 2; // 결과: 2 (정수 나눗셈)
float b = 5.0 / 2; // 결과: 2.5
정수 나눗셈을 실수처럼 계산하고 싶을 땐 형 변환이 필요합니다.
▸ 나머지 %
정수 나눗셈의 나머지를 계산할 때 사용합니다.
실수형에는 사용할 수 없습니다.
int r = 10 % 3; // r = 1
● 주의할 점
정수끼리의 나눗셈은 소수점 이하가 잘립니다.
int a = 7 / 2; // 결과: 3
실수에는 % 연산자를 사용할 수 없습니다.
float x = 7.5;
float y = 2.0;
// x % y; → 오류!
0으로 나누면 오류가 납니다.
int a = 10 / 0; // 런타임 에러 (프로그램 강제 종료)
● 연산자 우선순위
여러 연산자가 함께 있을 때는 곱셈(*), 나눗셈(/), 나머지(%)가 덧셈(+), 뺄셈(-)보다 먼저 계산됩니다.
int result = 3 + 4 * 2; // 결과: 11 (4*2 먼저 계산됨)
괄호를 사용하면 우선순위를 바꿀 수 있어요.
int result = (3 + 4) * 2; // 결과: 14
산술 연산자는 C언어에서 가장 자주 쓰이는 기본 기능 중 하나입니다.
덧셈부터 나머지 연산까지 기호가 간단하고 직관적이지만, 자료형이나 계산 순서에 따라 다르게 동작할 수 있기 때문에 정확한 이해가 필요합니다.
실습 문제
아래 문제는 직접 코드를 작성해보고, 실행 결과를 확인한 후 스스로 정답을 유추해보는 형태입니다.
정답은 바로 아래에서 확인할 수 있습니다.
문제 1
정수형 변수 a = 7, b = 3이 있을 때, a + b, a - b, a * b, a / b, a % b의 결과를 출력하는 코드를 작성하세요.
문제 2
실수형 변수 x = 5.0, y = 2.0일 때, x / y의 결과를 소수점 둘째 자리까지 출력하세요.
문제 3
다음 코드의 출력 결과를 예측해보세요.
int result = 3 + 4 * 2;
printf("%d\n", result);
문제 4
아래 코드에서 괄호를 추가하여 출력 결과가 14가 되도록 수정하세요.
int result = 3 + 4 * 2;
문제 5
다음 중 오류가 발생하는 코드를 모두 고르세요.
A. int a = 10 % 3;
B. float b = 5.0 / 2;
C. float c = 7.5 % 2;
D. int d = 5 / 0;
▶ 정답 확인하기
정답 1
int a = 7, b = 3;
printf("덧셈: %d\n", a + b); // 10
printf("뺄셈: %d\n", a - b); // 4
printf("곱셈: %d\n", a * b); // 21
printf("나눗셈: %d\n", a / b); // 2
printf("나머지: %d\n", a % b); // 1
정답 2
float x = 5.0, y = 2.0;
printf("결과: %.2f\n", x / y); // 출력: 2.50
정답 3
출력 결과: 11
→ 4 * 2 = 8 → 3 + 8 = 11 (연산자 우선순위 때문)
정답 4
int result = (3 + 4) * 2; // 결과: 14
정답 5
정답: C, D
- C: %는 정수형에서만 사용 가능 → float % int는 오류
- D: 0으로 나누는 연산은 런타임 에러 발생