해결된 질문
작성
·
6.3K
0
단항 증감 연산자 수업에서 예시로 들었던...
int x = 5, y = 10, data = 0;
data = ++x + ++y + ++x;
printf("data = %d\n", data);
의 출력값이 25가 나옵니다. 아무리 생각해도 24가 정답인 것 같은데...
답변 2
0
++x, ++y는 단항 연산으로 덧셈 및 단순 대입연산보다 우선순위가 높습니다. 그러므로 아래 연산을 풀어서 설명하면
data = ++x + ++y + ++x;
이름이 x인 변수의 값을 1증가 시킴 (이 때 x는 6이 됨)
이름이 y인 변수의 값을 1증가 시킴
이름이 x인 변수의 값을 또 1증가 시킴 (이 때 x는 7이 됨)
이름이 x인 변수의 값과 이름이 y인 변수의 값과 이름이 x인 변수의 값을 모두 더해 이름이 data인 변수에 저장
결국 data = 7 + 11 + 7;이 되는 것입니다. 이런 경우 디스어셈블 코드를 보는 것이 도움이 됩니다. 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
백종진님께서 질문하신 ‘단항 증감 연산자’의 예시에 대한 궁금증을 이해합니다. 제공된 코드에서 출력값이 25가 나오는 이유를 설명드리겠습니다.
int x = 5, y = 10, data = 0;
data = ++x + ++y + ++x;
printf("data = %d\n", data);
이 프로그램에서 연산이 어떻게 이루어지는지 단계별로 살펴보겠습니다:
++x
는 x
의 값을 먼저 증가시킨 후 값을 사용합니다. 따라서 처음 ++x
로 x
는 6이 됩니다.++y
를 수행하면, y
는 11이 됩니다.++x
다시 수행되어 x
는 7이 됩니다.이렇게 연산을 수행하면 수식은 6 + 11 + 7
가 되어 최종적으로 data
에는 25가 저장됩니다.
구체적으로, 이 과정에서 두 번의 ++x
가 사용되기 때문에 x
의 최종 값이 두 번 증가하게 되며, y
는 시작 값에서 한 번만 증가합니다. 그래서 결과적으로 x + y + x
는 6 + 11 + 7
로 계산됩니다.
이와 관련된 더 상세한 설명이 인프런 커뮤니티의 기존 질문에서도 논의되었습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.