[C++] 연산자


Study/C , C++ , MFC  2020. 3. 11. 23:30

안녕하세요. 명월입니다.


이 글은 C++에서 사용되는 연산자에 대한 글입니다.


C++ 연산자는 Java와 C#과 거의 비슷합니다. 크게 다른게 없으니깐 간략하게 연산자 종류 확인하고 C++ 소스 예제를 소개하겠습니다.

연산자 사용법 설명
산술 연산자
++ ++a, a++ 값을 하나 증가시킵니다.(전위, 후위 연산자)
-- --a, a-- 값을 하나 감소시킵니다.(전위, 후위 연산자)
+ a + b 더하기
- a - b 빼기
* a * b 곱하기
/ a / b 나누기
% a % b 나머지
관계 연산자
> a > b a가 b보타 크면 true를 반환, 작거나 같으면 false를 반환
>= a >= b a가 b보다 크거나 같으면 true를 반환, 작으면 false를 반환
< a < b a가 b보다 작으면 true를 반환, 크거나 같으면 false를 반환
<= a <= b a가 b보다 작거나 같으면 true를 반환, 크면 false를 반환
== a == b a와 b가 같으면 true를 반환, 다르면 false를 반환
!= a != b a와 b가 다르면 true를 반환, 같으면 true를 반환
논리 연산자
<< a << b 정수 a의 2진수 값을 왼쪽으로 b만큼 이동시키고 나머지는 0으로 채움
>> a >> b 정수 a의 2진수 값을 오른쪽으로 b만큼 이동시키고 나머지를 양수는 0으로 음수는 1로 채움
& a & b a와 b의 and 계산 ex) 4(0100) & 5(0101) = 4(0100)
| a | b a와 b의 or 계산 ex) 4(0100) | 5(0101) = 5(0101)
^ a ^ b a와 b의 xor 계산 ex) 4(0100) ^ 5(0101) = 1(0001)
대입 연산자
+= a += b a = a + b;와 같은 의미
-= a -= b a = a - b;와 같은 의미
*= a *= b a = a * b;와 같은 의미
/= a /= b a = a / b;와 같은 의미
%= a %= b a = a % b;와 같은 의미
&= a &= b a = a & b;와 같은 의미
|= a |= b a = a | b;와 같은 의미
^= a ^= b a = a ^ b;와 같은 의미
<<= a <<= b a = a << b;와 같은 의미
>>= a >>= b a = a >> b;와 같은 의미
삼항 연산자
? a = b == c ? d : e b와 c가 같으면 a변수에 d의 값을 넣고 b와 c가 다르면 e의 값을 입력

다음은 연산자에 대한 예제입니다.

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
  // 변수 선언.
  int a = 5555;
  int b = 3;
  // 산술 연산자
  // 후치 증감이라 출력은 5555가 되고 a의 값은 5556이 된다.
  cout << " a++ -> " << a++ << endl;
  // 후치 가감이라 출력은 5556이 되고 a의 값은 5555이 된다.  
  cout << " a-- -> " << a-- << endl;
  // 전치 증감이라 출력은 5556이 되고 a의 값은 5556이 된다.
  cout << " ++a -> " << ++a << endl;
  // 전치 가감이라 출력은 5555이 되고 a의 값은 5555이 된다.
  cout << " --a -> " << --a << endl;
  // 5555 + 3은 5558이다.
  cout << " a + b -> " << a + b << endl;
  // 5555 - 3은 5552이다.
  cout << " a - b -> " << a - b << endl;
  // 5555 * 3은 16665이다.
  cout << " a * b -> " << a * b << endl;
  // 5555 / 3은 1851이다.
  cout << " a / b -> " << a / b << endl;
  // 5555 / 3의 나머지는 2이다.
  cout << " a % b -> " << a % b << endl;
  // 관계 연산자
  // 5555 > 3은 true(1)이다.
  cout << " a > b -> " << (a > b) << endl;
  // 5555 < 3은 false(0)이다.
  cout << " a < b -> " << (a < b) << endl;
  // 5555 와 3은 같다는 false(0)이다.
  cout << " a == b -> " << (a == b) << endl;
  // 5555 와 3은 같지 않다는 true(1)이다.
  cout << " a != b -> " << (a != b) << endl;
  // 논리 연산자
  // 5555 (0001 0101 1011 0011) 를 왼쪽으로 3 비트 이동한다. 44,440(1010 1101 1001 1000)이 된다.
  cout << " a << b -> " << (a << b) << endl;
  // 5555 (0001 0101 1011 0011) 를 오른쪽으로 3 비트 이동한다. 694(0000 0010 1011 0110)가 된다.
  cout << " a >> b -> " << (a >> b) << endl;
  // 변수 재선언
  a = 4;
  b = 5;
  // 4 (0100) 와 5 (0101) 를 and하면 4(0100)가 된다.
  cout << " a & b -> " << (a & b) << endl;
  // 4 (0100) 와 5 (0101) 를 or하면 5(0101)가 된다.
  cout << " a | b -> " << (a | b) << endl;
  // 4 (0100) 와 5 (0101) 를 xor하면 1(0001)이 된다.
  cout << " a ^ b -> " << (a ^ b) << endl;
  // 대입 연산자
  // 4 + 5 = 9가 된다. a값은 9이다.
  cout << " a += b -> " << (a += b) << endl;
  // 9 - 5 = 4가 된다. a값은 4이다.
  cout << " a -= b -> " << (a -= b) << endl;
  // 4 * 5 = 20가 된다. a값은 20이다.
  cout << " a *= b -> " << (a *= b) << endl;
  // 20 / 5 = 4가 된다. a값은 4이다.
  cout << " a /= b -> " << (a /= b) << endl;
  // 4 / 5의 나머지는 4가 된다. a값은 4이다.
  cout << " a %= b -> " << (a %= b) << endl;
  // 4 (0100) 와 5 (0101) 를 and하면 4(0100)가 된다. a값은 4이다.
  cout << " a &= b -> " << (a &= b) << endl;
  // 4 (0100) 와 5 (0101) 를 or하면 5(0101)가 된다. a값은 5이다.
  cout << " a |= b -> " << (a |= b) << endl;
  // 변수 재선언
  a = 4;
  // 4 (0100) 와 5 (0101) 를 xor하면 1(0001)이 된다. a값은 1이다.
  cout << " a ^= b -> " << (a ^= b) << endl;
  // 1 (0000 0001)이 왼쪽으로 5 비트 이동한다. 32(0010 0000)가 된다. a값은 32이다.
  cout << " a <<= b -> " << (a <<= b) << endl;
  // 32 (0010 0000)이 오른쪽으로 5 비트 이동한다. 1(0000 0001)이 된다. a값은 1이다.
  cout << " a >>= b -> " << (a >>= b) << endl;
  // 삼항 연산자
  // 5와 6은 같지 않다. true면 10을 a에 대입, fakse면 20 대입한다. 다시 5와 6은 같지 않다는 true이므로 a값은 10이다.
  cout << " a = 5 != 6 ? 10 : 20 -> " << (a = 5 != 6 ? 10 : 20) << endl;
  return 0;
}

여기까지 C++에서 사용되는 연산자에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.