할당 연산자 (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 연산을 수행합니다.