• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

3.3 강의 후위 연산 질문

24.02.07 16:43 작성 조회수 90

1

먼저 강의 정말 유익하게 잘 보았습니다.

본론으로 들어가면 선생님께서는 전위 연산을 사용하였더니 4라는 결과가 나왔지만 후위 연산을 사용하니깐 결과값이 3이 나왔습니다.

여기서 a는 2가 되는 것이 이해가 되지만 b는 왜 1이 되는지 의문이여서 질문글을 남깁니다.

답변 1

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2024.02.07

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

해당 강의의 8:55 부분에 대한 질문이시네요.

전위 연산자 ++aa 의 값을 증가시킨 후에 a 의 값을 반환합니다.
반면, 후위 연산자 a++a 의 값을 반환한 뒤에 a 를 증가시킵니다.

 

이 때, add(a, a++) 를 호출하면, a 의 현재 값인 1 이 함수 add 로 전달되고, 그 후에 a 가 증가하여 2 가 됩니다.
그래서 add 함수는 11 을 더해서 2 를 반환합니다.

 

다만, 강의에서도 교수님께서 "do not use" 주석과 함께 설명해주신 것처럼,
이러한 사용은 정의되지 않은 동작(UB, Undefined Behavior), 즉, 컴파일러나 실행 환경에 따라서 결과가 달라질 수 있습니다.
즉, 문법을 학습하시는 단계에서 '이렇게 사용하는 것은 피해야 된다' 라는 맥락에서의 예시로 이해하시면 좋을 것 같습니다.

정의되지 않은 동작은 피하는 것이 좋으므로, 변수를 별도로 증가시키는 코드를 작성하고 그 후에 함수를 호출하는 것이 좋습니다.