증감연산자는 피연산자의 앞, 혹은 뒤에 위치하여 피연산자의 값을 1씩 증가 혹은 감소시키는 연산자이다.
#include<iostream>
int main()
{
int num = 3;
num++; // num변수의 값 3에 1을 증가함
std::cout << num;
// 출력값은 3 + 1인 4
int num2 = 3;
num--; //num2변수의 값 3에 1을 감소시킴
std::cout << num2;
// 출력값은 3 - 1인 2
}
위와 같이 피연산자의 변수의 값에서 +1 혹은 -1 해주는 역할으로, 증감연산자의 식을 풀어본다면
num++; 와 num = num + 1; 과 같고, num--; 은 num = num - 1;과 같다.
앞서 말했 듯, 증감연산자는 피연산자의 뒤 뿐 아니라 앞에도 붙을 수 있는데 이 경우에는 증감연산의 순서가 바뀌게 된다.
증감연산자의 위치에 따라 앞에 증감연산자가 붙은 (++num)연산을 전위연산,
뒤에 증감연산자가 붙은(num++) 연산을 후위연산이라고 부른다
#include<iostream>
int main()
{
int num1 = 3;
int num2 = ++num1;
std::cout << num2 << num1 << endl;
// 출력값은 4 4
int num3 = 3;
int num4 = num3--;
std::cout << num4 << num3;
// 출력값은 3 2
}
위의 num2는 전위연산으로, 증감식이 적용된 후에 연산한다.
std::cout에 있는 << 연산자도 나중에 설명할 시프트 연산자이므로,
시프트 연산을 통해 num2가 출력되기 전 증감연산이 진행돼 1이 증가되어 num2의 값이 4가 되고,
그 후 std::cout 연산을 통해 출력되므로 num2가 출력됐을 때의 값은 4이다.
전위연산) 증감식적용 -> 변수에 증감된 값 대입 -> 대입된 값으로 연산
이와 달리 num4는 후위연산으로, 연산이 먼저 처리된 후 증감식이 적용된다.
그렇기에 먼저 std::cout의 시프트 연산자를 통해 증감식이 적용되기 전의 값인 3이 출력되고,
출력된 후에 증감식이 적용되어 num3의 값은 num3 - 1의 값인 2로 출력되게 된다.
후위연산) 연산 -> 증감식적용 -> 변수에 증감된 값 대입
또한 증감연산식은 기존의 산술연산자를 이용한 산술보다 연산자가 적다는 측면에서 최적화에 용이하다.
#include<iostream>
int main()
{
int num1 = 3;
num = num1 + 1; // 연산자 수 : 대입연산자, 산술연산자 총 2개
int num2 = 3;
num++; // 연산자 수 : 증감연산자 1개
}
'C++ 일기' 카테고리의 다른 글
| 6 - 5. 논리연산자 ( &&, ||, !) (0) | 2024.02.20 |
|---|---|
| 6 - 3. 복합대입연산자(+=, -=, *=, /=, %=) (0) | 2024.02.20 |
| 6 - 1. 산술연산자 (+, -, *, /, %) (0) | 2024.02.20 |
| 5. std::cout과 std::cin (C++의 입출력) (0) | 2024.02.20 |
| 4. 자료형 (Data Type) (2) | 2024.02.20 |