할당 연산자 (Assignment operator)

할당 연산자 (Assignment operator)는 변수에 값을 할당(저장)하는데 사용됩니다.

할당 연산자는 단순 할당 연산자 (simple assignment operator)와 복합 할당 연산자 (compound assignment operator)로 나눌 수 있는데 아래의 할당 연산자 종류 중 ‘=’는 단순 할당 연산자 이고, 나머지는 모두 복합 할당 연산자 입니다.


할당 연산자 종류


=   :   오른쪽 피연산자의 값을 왼쪽 피연산자에 저장합니다.

+=   :   오른쪽 피연산자의 값을 왼쪽 피연산자와 더해서 왼쪽 피연산자에 저장합니다.

-=   :   오른쪽 피연산자의 값을 왼쪽 피연산자에서 빼서 왼쪽 피연산자에 저장합니다.

*=   :   오른쪽 피연산자의 값을 왼쪽 피연산자와 곱해서 왼쪽 피연산자에 저장합니다.

/=   :   왼쪽 피연산자를 오른쪽 피연산자로 나눠서 왼쪽 피연산자에 저장합니다.

%=   :   왼쪽 피연산자에서 오른쪽 피연산자로 나눈 나머지(모듈러스)를 왼쪽 피연산자에 저장합니다.

<<=   :   오른쪽 피연산자 값의 비트수만큼 왼쪽 피연산자를 왼쪽으로 이동해서 왼쪽 피연산자에 저장합니다.

>>=   :   오른쪽 피연산자 값의 비트수만큼 왼쪽 피연산자를 오른쪽으로 이동해서 왼쪽 피연산자에 저장합니다.

&=   :   왼쪽, 오른쪽 피연산자의 비트 AND를 구해서 왼쪽 피연산자에 저장합니다.

|=   :   왼쪽, 오른쪽 피연산자의 비트 OR를 구해서 왼쪽 피연산자에 저장합니다.

^=   :   왼쪽, 오른쪽 피연산자의 비트 XOR를 구해서 왼쪽 피연산자에 저장합니다.


예제1 - +=, -=, *=, /=, %=

int x = 5;
cout << x << endl;

x += 3;
cout << x << endl;

x -= 3;
cout << x << endl;

x *= 4;
cout << x << endl;

x /= 2;
cout << x << endl;

x %= 3;
cout << x << endl;
5
8
5
20
10
1

오른쪽 피연산자를 더하고, 빼고, 곱하고, 나눈 값, 그리고 나눈 나머지를 왼쪽 피연산자에 저장합니다.



예제2 - <<=, >>=

int x = 5;              // binary x: 0000 0101
cout << x << endl;      // decimal x: 5

x <<= 3;                // binary x <<= 3: 0010 1000 (3 bits left shift)
cout << x << endl;      // decimal x: 40

x >>= 2;                // binary x >>= 2: 0000 1010 (2 bits right shift)
cout << x << endl;      // decimal x: 10
5
40
10

비트 시프트 연산자는 2진수에서 비트를 왼쪽 또는 오른쪽으로 시프트합니다.



예제3 - &=, |=, ^=

int x = 5;           // binary x: 0000 0101
cout << x << endl;   // decimal x: 5

x &= 3;              // binary x &= 3: 0000 0101 & 0000 0011 = 0000 0001 (비트 AND)
cout << x << endl;   // decimal x: 1

x |= 12;             // binary x |= 3: 0000 0001 | 0000 1100 = 0000 1101 (비트 OR)
cout << x << endl;   // decimal x: 13

x ^= 4;              // binary x ^= 4: 0000 1101 | 0000 0100 = 0000 1001 (비트 XOR)
cout << x << endl;   // decimal x: 9
5
1
13
9

&=, |=, ^=는 비트 AND, 비트 OR, 비트 XOR 연산을 수행합니다.