프로그래밍언어/C언어[초급]

[C언어][초급] Chapter19. 복합 대입 연산자 (+=, -=, *=, /=, %=)

about_IT 2025. 4. 16. 19:56

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