복합 할당 연산자(compound assignment operator)는 연산 결과를 더 짧고 간결한 문법으로 변수에 저장할 수 있도록 해주는 연산자입니다. 먼저 두 피연산자 사이에서 연산이 수행된 뒤, 그 결과가 첫 번째 피연산자(변수)에 할당됩니다.
예를 들어 val += 3은 val = val + 3과 동일하게 동작하며, 코드를 읽기 쉽고 작성하기 편리하게 만들어 줍니다.
C#의 복합 할당 연산자 목록
| 번호 | 연산자 및 이름 |
|---|---|
| 1 | += 덧셈 할당 (Addition Assignment) |
| 2 | -= 뺄셈 할당 (Subtraction Assignment) |
| 3 | *= 곱셈 할당 (Multiplication Assignment) |
| 4 | /= 나눗셈 할당 (Division Assignment) |
| 5 | %= 나머지 할당 (Modulo Assignment) |
| 6 | &= 비트 AND 할당 (Bitwise AND Assignment) |
| 7 | |= 비트 OR 할당 (Bitwise OR Assignment) |
| 8 | ^= 비트 XOR 할당 (Bitwise XOR Assignment) |
| 9 | <<= 왼쪽 시프트 할당 (Left Shift Assignment) |
| 10 | >>= 오른쪽 시프트 할당 (Right Shift Assignment) |
| 11 | => 람다 연산자 (Lambda Operator) * 엄밀히 말하면 할당 연산자는 아니지만, 관련 목록에 함께 포함됩니다. |
예제
아래 예제를 통해 C#에서 복합 할당 연산자를 실제로 어떻게 활용하는지 살펴보겠습니다.
using System;
namespace Program {
class MyClass {
public static void Main(string[] args) {
int val = 7;
val += 3;
Console.WriteLine("덧셈 할당: " + val);
val -= 2;
Console.WriteLine("뺄셈 할당: " + val);
val *= 7;
Console.WriteLine("곱셈 할당: " + val);
val /= 7;
Console.WriteLine("나눗셈 할당: " + val);
val %= 5;
Console.WriteLine("나머지 할당: " + val);
val &= 9;
Console.WriteLine("비트 AND 할당: " + val);
val <<= 3;
Console.WriteLine("왼쪽 시프트 할당: " + val);
val >>= 5;
Console.WriteLine("오른쪽 시프트 할당: " + val);
}
}
}실행 결과
덧셈 할당: 10 뺄셈 할당: 8 곱셈 할당: 56 나눗셈 할당: 8 나머지 할당: 3 비트 AND 할당: 1 왼쪽 시프트 할당: 8 오른쪽 시프트 할당: 0
동작 과정 설명
위 예제의 실행 흐름을 단계별로 보면 다음과 같습니다.
- val = 7: 초기값 설정
- val += 3 → 7 + 3 = 10
- val -= 2 → 10 - 2 = 8
- val *= 7 → 8 × 7 = 56
- val /= 7 → 56 ÷ 7 = 8
- val %= 5 → 8을 5로 나눈 나머지 = 3
- val &= 9 → 3(0011)과 9(1001)의 비트 AND = 1
- val <<= 3 → 1을 3비트 왼쪽으로 이동 = 8
- val >>= 5 → 8을 5비트 오른쪽으로 이동 = 0
이처럼 복합 할당 연산자를 활용하면 산술, 비트 연산 결과를 한 줄의 코드로 깔끔하게 처리할 수 있습니다.