[C언어][초급] Chapter19. 복합 대입 연산자 (+=, -=, *=, /=, %=)
C언어에서 어떤 변수에 값을 더하거나 빼고 다시 저장하는 코드를 자주 작성하다 보면 이런 패턴을 많이 보게 됩니다.
이런 연산은 단순하지만 반복적이죠. 그래서 C언어는 이런 작업을 더 간단하게 쓸 수 있도록 **복합 대입 연산자(Compound Assignment Operator)**를 제공합니다.
● 복합 대입 연산자란?
복합 대입 연산자는 기존 변수의 값에 어떤 연산을 하고, 그 결과를 다시 자기 자신에게 저장하는 연산자입니다.
a = a + 1;
→ a += 1;
b = b * 2;
→ b *= 2;
더 짧고 읽기 쉬운 코드로 바뀌죠.
● 자주 쓰이는 복합 대입 연산자
연산자 | 의미 | 예시 | 설명 |
+= | 덧셈 후 대입 | a += 5; | a = a + 5와 동일 |
-= | 뺄셈 후 대입 | b -= 2; | b = b - 2와 동일 |
*= | 곱셈 후 대입 | c *= 3; | c = c * 3와 동일 |
/= | 나눗셈 후 대입 | d /= 4; | d = d / 4와 동일 |
%= | 나머지 후 대입 | e %= 3; | e = e % 3와 동일 |
● 예제 코드
int a = 10;
a += 5; // a = a + 5 → a는 15가 됨
int b = 20;
b *= 2; // b = b * 2 → b는 40
한 줄로도 계산과 저장을 동시에 할 수 있어 코드가 훨씬 간결해집니다.
● 어디에 쓸 수 있을까?
복합 대입 연산자는 누적 합계 계산, 카운트 증가, 반복 처리 등에서 자주 사용됩니다.
sum += value; // 반복문 안에서 누적 합계
count -= 1; // 카운트 다운
● 주의할 점
- 자료형에 맞는 연산을 해야 합니다.
int a = 10;
a /= 0; // 0으로 나누면 오류 발생!
- 정수형에서 /=나 %=를 사용할 때는 정수끼리 나눈다는 점을 잊지 마세요.
int x = 7;
x /= 2; // x = 3 (소수점 이하 버려짐)
- 문법은 간단하지만 연산 우선순위에 따라 괄호를 써주는 게 안전할 때도 있습니다.
a += (b * 2); // 복합 연산과 조합 시 괄호 사용 권장
복합 대입 연산자는 짧고 간결한 코드 작성을 도와주는 유용한 도구입니다.
a = a + b처럼 반복되는 코드를 a += b처럼 줄이면 가독성도 좋아지고 실수도 줄어듭니다.
덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 포함한 5개의 연산자만 정확히 익히면,
다양한 계산 로직을 깔끔하게 구성할 수 있어요.
실습 문제
아래 문제는 직접 코드를 작성해보고, 실행 결과를 확인한 후 스스로 정답을 유추해보는 형태입니다.
정답은 바로 아래에서 확인할 수 있습니다.
문제 1
정수형 변수 a = 10이 있을 때, a에 5를 더하는 복합 대입 연산자를 사용해보세요.
출력 예시:
a = 15
문제 2
정수형 변수 b = 20이 있을 때, b에 8을 빼는 복합 대입 연산을 작성하세요.
문제 3
정수형 변수 c = 4가 있을 때, c에 3을 곱한 후 출력하는 코드를 작성하세요.
문제 4
정수형 변수 d = 12를 4로 나누는 복합 대입 연산을 사용하세요.
문제 5
정수형 변수 e = 17일 때, e를 5로 나눈 나머지를 복합 대입 연산자를 이용해 계산하세요.
▶ 정답 확인하기
정답 1
int a = 10;
a += 5;
printf("a = %d\n", a); // 출력: a = 15
정답 2
int b = 20;
b -= 8;
printf("b = %d\n", b); // 출력: b = 12
정답 3
int c = 4;
c *= 3;
printf("c = %d\n", c); // 출력: c = 12
정답 4
int d = 12;
d /= 4;
printf("d = %d\n", d); // 출력: d = 3
정답 5
int e = 17;
e %= 5;
printf("e = %d\n", e); // 출력: e = 2