안녕하세요. 명월입니다.
이 글은 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++에서 사용되는 연산자에 대한 글이었습니다.
궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.
'Study > C , C++ , MFC' 카테고리의 다른 글
[C++] 클리스 선언과 사용법 (0) | 2020.03.17 |
---|---|
[C++] 함수 사용법(가변 파라미터 stdarg.h, 함수 포인터 그리고 범용 포인터 void*) (0) | 2020.03.15 |
[C++] 배열과 포인터(메모리 주소) 그리고 할당(new){stack과 heap에 대해서} (0) | 2020.03.14 |
[C++] 제어문 (0) | 2020.03.12 |
[C++] 변수와 상수, 그리고 데이터 타입 (0) | 2020.03.10 |
[C++] CMake의 사용법 (0) | 2020.03.10 |
[C++] Make와 Makefile 작성법 (0) | 2020.03.09 |
[C++] Visual Studio 설치와 Linux의 g++ 설치 (0) | 2020.03.06 |