-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
3.3 강의 후위 연산 질문
24.02.07 16:43 작성 조회수 90
1
먼저 강의 정말 유익하게 잘 보았습니다.
본론으로 들어가면 선생님께서는 전위 연산을 사용하였더니 4라는 결과가 나왔지만 후위 연산을 사용하니깐 결과값이 3이 나왔습니다.
여기서 a는 2가 되는 것이 이해가 되지만 b는 왜 1이 되는지 의문이여서 질문글을 남깁니다.
답변을 작성해보세요.
2
Soobak
2024.02.07
안녕하세요, 질문&답변 도우미 Soobak 입니다.
해당 강의의 8:55 부분에 대한 질문이시네요.
전위 연산자 ++a
는 a
의 값을 증가시킨 후에 a
의 값을 반환합니다.
반면, 후위 연산자 a++
는 a
의 값을 반환한 뒤에 a
를 증가시킵니다.
이 때, add(a, a++)
를 호출하면, a
의 현재 값인 1
이 함수 add
로 전달되고, 그 후에 a
가 증가하여 2
가 됩니다.
그래서 add
함수는 1
과 1
을 더해서 2
를 반환합니다.
다만, 강의에서도 교수님께서 "do not use" 주석과 함께 설명해주신 것처럼,
이러한 사용은 정의되지 않은 동작(UB, Undefined Behavior), 즉, 컴파일러나 실행 환경에 따라서 결과가 달라질 수 있습니다.
즉, 문법을 학습하시는 단계에서 '이렇게 사용하는 것은 피해야 된다' 라는 맥락에서의 예시로 이해하시면 좋을 것 같습니다.
정의되지 않은 동작은 피하는 것이 좋으므로, 변수를 별도로 증가시키는 코드를 작성하고 그 후에 함수를 호출하는 것이 좋습니다.
답변 1