일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Python
- 포인터
- baekjoon
- Object Oriented Programming
- 백준
- array
- string
- 오블완
- pass by reference
- raw data
- 반복문
- 파이썬
- Class
- function
- Deep Learning
- 함수
- C++
- assignment operator
- OOP
- programming
- vscode
- const
- 티스토리챌린지
- predictive analysis
- pointer
- Pre-processing
- Data Science
- 문자열
- 알고리즘
- 배열
- Today
- Total
Channi Studies
[C++] Increment/Decrement Operator (증감연산자) ++, -- 본문
증감 연산자는 대상 값을 1씩 증가 혹은 감소시킵니다.
(variable++: variable = variable + 1)
(variable--: variable = variable - 1)
로 이해하면 좋습니다.
증감 연산자는 정수, 실수, 포인터 변수에서 사용 가능합니다.
증감 연산자에는 두가지 notation이 있습니다.
Prefix notation: ++num
Postfix notation: num++
각각 증감 연산을 statement 이전에 적용할 지, statement 실행 이후에 적용할지를 결정합니다.
// 증감 연산자 사용 예시
#include <iostream>
using namespace std;
int main(){
int counter {10};
cout << "Counter: " << counter << endl;
// Counter: 10
counter = counter + 1;
cout << "Counter: " << counter << endl;
// Counter: 11
counter ++;
cout << "Counter: " << counter << endl;
// Counter: 12
++ counter;
cout << "Counter: " << counter << endl;
// Counter: 13
return 0;
}
다음은 prefix notation과 postfix notaiton의 차이를 보여주는 코드입니다.
// prefix notation v.s. postfix notation
#include <iostream>
using namespace std;
int main(){
int counter {10};
int result = {0};
cout << "Counter: " << counter << endl;
// Counter: 10
// prefix notation
result = ++counter;
cout << "Counter: " << counter << endl;
cout << "Result: " << result << endl;
// Counter: 11
// Result: 11
// counter & result 값 재정의
counter = 10;
result = 0;
// postfix notation
result = counter++;
cout << "Counter: " << counter << endl;
cout << "Result: " << result << endl;
// Counter: 11
// Result: 10
return 0;
}
prefix notation의 경우에는 counter 변수값이 우선적으로 변경되고 난 이후,
statement가 실행되기 때문에, 해당 statment 실행 이후 변수값을 확인 할 시,
counter과 result 모두 1씩 증가한 모습입니다.
반대로 postfix notation에서는 statement가 모두 진행된 이후에 counter 값이 1 증가하기 때문에,
counter은 1 증가했지만, result는 증가하기 이전의 값인 10을 받은 것을 확인할 수 있습니다.
다른 코드를 한번 보겠습니다.
// prefix notation
#include <iostream>
using namespace std;
int main(){
int counter = 10;
int result = 0;
cout << "Counter: " << counter << endl;
// Counter: 10
// prefix notation
result = ++counter + 10;
cout << "Counter: " << counter << endl;
cout << "Result: " << result << endl;
// Counter: 11
// Result: 21
return 0;
}
이번에도 역시 prefix notation이기 때문에,
result에, (counter + 1) + 10 = 11 + 10 = 21을 저장하게 되고,
counter에는 기존값에 1을 증가한 11이 저장되게 됩니다.
postfix notation의 경우는 다음과 같습니다.
// postfix notation
#include <iostream>
using namespace std;
int main(){
int counter = 10;
int result = 0;
cout << "Counter: " << counter << endl;
// Counter: 10
result = counter++ + 10;
cout << "Counter: " << counter << endl;
cout << "Result: " << result << endl;
// Counter: 11
// Result: 20
return 0;
}
이번에는 result = counter + 10의 statement 작용 이후에 counter = counter + 1이 적용된다고 이해하면 됩니다.
그렇기 때문에, Counter는 1이 증가하였지만, result에는 증가한 값이 적용되지 못해 기존의 값 10(counter) + 10 = 20이 저장됩니다.
본문에서는 증가 연산자의 경우에만 작성했지만, 감소 연산자도 정확히 같은 방식으로 적용됩니다.
* 한가지 statement에서 동일한 변수에 대해 2개 이상의 증감 연산자를 사용하지 않도록 주의해야 합니다!
'C++ > 기타' 카테고리의 다른 글
[C++] c++에서 boolean 값을 true/false로 출력하고 싶을 때 (0) | 2023.12.07 |
---|---|
[C++] 정수끼리의 나눗셈 (0) | 2023.12.07 |
[C++] Assignment Operator (할당 연산자), = (0) | 2023.12.06 |
[C++] 배열 (Array) (0) | 2023.12.05 |
[C++] 상수(constant) (0) | 2023.12.05 |