<연산자>
- 데이터를 가공(연산)하는 모든 명령에 필요한 것들
- 어떤 종류의 연산자가 있는지
- 우선 순위: 어떤 순서로 연산이 진행되는지
- 결합 순서: 좌측부터 연산하는 연산자, 우측부터 연산하는 연산자
연산자의 종류
- 산술연산자
- 대입연산자
- 복합대입연산자
- 증감연산자
- 관계연산자
1. 산술 연산자
- 사칙 연산을 할때 사용하는 연산자
- 좌측부터 연산한다.
연산자 | 설명 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
% | 나머지 |
//======사칙연산
int left_value = 11;
int right_value = 3; //3을 0으로 바꾸면, 런타임에러가 뜬다.(곱하기까지만 나옴)
cout << "#산술연산자" << endl;
cout << left_value << " + " << right_value << ": " << left_value + right_value << endl;
cout << left_value << " - " << right_value << ": " << left_value - right_value << endl;
cout << left_value << " * " << right_value << ": " << left_value * right_value << endl;
cout << left_value << " / " << right_value << ": " << left_value / right_value << endl;
cout << left_value << " % " << right_value << ": " << left_value % right_value << endl;
*/과 %은 오른쪽 항이 0일 경우 런타임 에러가 난다
*우선 순위: (*, /, %) > (+, -)
2. 대입 연산자
- 왼쪽 항에 오른쪽 항의 값을 대입(복사)한다. (오른쪽에서 왼쪽으로)
연산자 | 설명 |
= | 대입(복사) |
//======대입 연산자
int left_value1 = 11 + 3; //우측의 연산을 먼저하고, 왼쪽으로 복사한다.
* 우측의 연산을 먼저하고, 왼쪽으로 복사한다.
* 값을 변경하기 위해 사용.
3. 복합대입연산자
- 산술 연산자 + 대입 연산자 느낌...
연산자 | 설명 | 예시 |
+= | 오른쪽 값을 왼쪽 값에 더한 값을 왼쪽 값에 대입하기 | 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; |
//======복합대입연산자
int left_value2 = 11;
int right_value2 = 3;
cout << "\n#복합대입연산자" << endl;
cout << "(left_value2) " << left_value2 << " += " << right_value2 << ", left_value2 => ";
left_value2 += right_value2;
cout << left_value2 << endl;
cout << "(left_value2) " << left_value2 << " -= " << right_value2 << ", left_value2 => ";
left_value2 -= right_value2;
cout << left_value2 << endl;
cout << "(left_value2) " << left_value2 << " *= " << right_value2 << ", left_value2 => ";
left_value2 *= right_value2;
cout << left_value2 << endl;
cout << "(left_value2) " << left_value2 << " /= " << right_value2 << ", left_value2 => ";
left_value2 /= right_value2;
cout << left_value2 << endl;
cout << "(left_value2) " << left_value2 << " %= " << right_value2 << ", left_value2 => ";
left_value2 %= right_value2;
cout << left_value2 << endl;
left_value2 += 3 + 6;
cout << left_value2 << endl;
*%=: a, b가 정수이면 문제가 없다. a,
b가 실수이면, 나머지 연산자가 동작하지 않는다.
기타 다른 형태일 경우 다양한 문제가 있을 수 있다.
4. 증감 연산자
- 대입 연산자 없이 값을 변경할 수 있다.
- 특정 변수의 값을 1씩 증가시키거나 감소시킬 때 사용한다.
- 변수의 앞이나 뒤에 ++ / -- 를 붙여서 사용한다.
- 변수 뒤에 붙은 경우, 다른 연산을 모두 한 후, 마지막에 연산이 진행된다.
ex. cout<<num++<<endl; (출력은 num의 원래 값. 출력 후에는 num의 값이 1 추가된다.)
연산자 | 설명 |
num++ | 해당 줄의 코드를 모두 실행 후, num에 1을 추가한 값을 저장 |
++num | num에 1을 추가한 값을 저장 후, 해당 줄의 코드 실행 |
num-- | 해당 줄의 코드를 모두 실행 후, num에 1을 뺀 값을 저장 |
--num | num에 1을 뺀 값을 저장 후, 해당 줄의 코드 실행 |
>> 변수 앞에 증감 연산자가 붙은 경우, 다른 연산을 하기 전에 연산이 진행 된다.
int left_value3 = 11;
left_value3++; //left_value3 = left_value3 + 1 (12)
cout << "left_value3++(외부) : " << left_value3 << endl;
++left_value3; //left_value3 = left_value3 + 1 (13)
cout << "++left_value3(외부) : " << left_value3 << endl;
cout << "left_value3++(내부) : " << left_value3++ << endl; //출력: 13 메모리: 15
cout << "++left_value3(내부) : " << ++left_value3 << "\\n" << endl; //메모리: 16 출력: 16
int left_value3 = 11;
left_value3++; //left_value3 = left_value3 + 1 (12)
cout << "left_value3++(외부) : " << left_value3 << endl;
++left_value3; //left_value3 = left_value3 + 1 (13)
cout << "++left_value3(외부) : " << left_value3 << endl;
cout << "left_value3++(내부) : " << left_value3++ << endl; //출력: 13 메모리: 15
cout << "++left_value3(내부) : " << ++left_value3 << "\\n" << endl; //메모리: 16 출력: 16
5. 관계연산자
- 두 값을 비교한 결과가 참인지 거짓인지 반환하는 연산자
- 참은 0이 아닌 수나 true, 거짓은 0이나 false로 표시
연산자 | 설명 | 예시 |
< | 왼쪽항의 값이 오른쪽항의 값보다 작다면 참을 반환. 아니면 거짓(크거나 같으면 거짓) | a < b |
> | 왼쪽항의 값이 오른쪽항의 값보다 크다면 참을 반환. 아니면 거짓(작거나 같으면 거짓) | a > b |
<= | 왼쪽항의 값이 오른쪽항의 값보다 작거나 같으면 참을 반환. 아니면 거짓(크면 거짓) | a <= b |
>= | 왼쪽항의 값이 오른쪽항의 값보다 크거나 같으면 참을 반환. 아니면 거짓(작으면 거짓) | a >= b |
== | 왼쪽항의 값이 오른쪽항의 값과 같으면 참을 반환. 아니면 거짓(크거나 작으면 거짓) | a == b |
!= | 왼쪽항의 값과 오른쪽항의 값이 다르면 참을 반환. 아니면 거진(같으면 거짓) | a != b |
//실습1 (관계연산자)
int age;
cout << "\n===실습===" << endl;
cout << "나이를 입력해주세요: ";
cin >> age;
cout << "\n결과>" << endl;
//boolalpha: 0, 1을 true, false로 바꿔서 알려줌
cout << "미성년자인가요? > \t\t" << boolalpha << (age <= 19) << endl;
cout << "주민등록증 발급대상인가요? > \t" << (age == 20) << endl;
cout << "아홉수인가요? > \t\t" << (age % 10 == 9) << endl;
(나이를 입력하면, 미성년자(19세 이하)인지, 주민등록 발급대상(20세)인지, 아홉수(끝자리가 9)인지 판별하여 true/false로 나타냄)
*boolalpha: 0, 1 등을 false, true로 변환해서 나타낸다.
*/과 %은 오른쪽 항이 0일 경우 런타임 에러가 난다
*우선 순위: (*, /, %) > (+, -)
'C++' 카테고리의 다른 글
C++ 기초(3): 연산자(논리/3항 연산자)와 난수 (22.04.11) (0) | 2022.04.12 |
---|---|
C++ 쫌쫌따리(1): Visual studio 자동 완성 단축키와 코드 분할 화면, cout 내부 처리 등(22.04.07) (0) | 2022.04.11 |
C++ 예제: Up/Down 게임(22.04.07) (0) | 2022.04.07 |
C++ 기초(1) (22.04.06) (0) | 2022.04.07 |
C++ 기초(22.04.05) (0) | 2022.04.07 |