Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 1563
- C
- 줄 세우기
- RVO
- UnrealEngine4
- DeferredRendering
- algorithm
- 오블완
- UE5
- NRVO
- softeer
- baekjoon
- 티스토리챌린지
- UnrealEngine5
- const
- Frustum
- 언리얼엔진5
- winapi
- 팰린드롬 만들기
- DirectX11
- GeeksForGeeks
- Programmers
- Unreal Engine5
- directx
- IFileDialog
- C++
- RootMotion
- 2294
- 프로그래머스
- 백준
Archives
- Today
- Total
Game Develop
[C++]증감연산자 전위,후위 차이점. 본문
++count와 count++의 차이는 뭘까?
결과론적으론 ++count는 객체를 반환, count++은 값을 반환한다는 것이다.
아래의 코드를 보자.
int x = 5;
int y = ++x;
사람이 의도한대로(아마도) x의 값은 1을 증가시키고 그 값이 y에 정상적으로 들어간다.
메모리에 있는 x값을 직접 증가시키고 x객체를 반환시킨다.
하지만 아래는?
int x = 5;
int y = x++;
사람은 y에 6이 들어가있길 바라지만, 실제로는 5가 들어있다.
물론 해당 라인의 실행이 끝난 이후에는 x에는 6이 정상적으로 들어가있다.
'x++'이라는 후위연산자의 리턴값은 컴파일러가 임시로 생성한 복사값이다.
후위연산이 실행되면 컴파일러는 임시객체에 변경하기전의 원본을 복사한다.
그리고 원본의 메모리에 접근해 증감 연산을 수행한다.(즉 후위연산자체에서 원본객체의 값이 실제로 변경되기는 함)
다만, 연산이 끝난 후의 리턴값이 원본을 복사해놨던 임시객체인것 뿐이다.
그래서 y에는 증가시키기전의 값이 들어있는것이다!
요약은 아래와 같다.
전위증감연산자는 피연산자(x)에 대한 증가연산을 진행한 뒤, 피연산자객체의 참조를 리턴한다.(lvalue)
후위증가연산자는 피연산자에 대한 증가연산을 진행한 뒤, 증가연산을 진행하기 전 원본을 복사해놨던 임시객체(rvalue)를 리턴한다
'C++ > C++' 카테고리의 다른 글
[C++] C++에서 배열초기화하기 (0) | 2022.09.08 |
---|---|
[C++] 클래스의 멤버함수에서, 속한 클래스의 인스턴스에 대해선 private접근 가능하다. (0) | 2022.09.05 |
[C++] 상속받은 가상함수에는 virtual,override 생략해도된다. (0) | 2022.09.01 |
[C++] Char*와 Char[]의 차이. (0) | 2022.08.17 |
[C++] Delete와 Delete[] 차이. (0) | 2022.07.11 |