인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

백종진님의 프로필 이미지
백종진

작성한 질문수

독하게 시작하는 C 프로그래밍

단항 증감 연산자 예시 정답

해결된 질문

작성

·

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;
  1. 이름이 x인 변수의 값을 1증가 시킴 (이 때 x는 6이 됨)

  2. 이름이 y인 변수의 값을 1증가 시킴

  3. 이름이 x인 변수의 값을 또 1증가 시킴 (이 때 x는 7이 됨)

  4. 이름이 x인 변수의 값과 이름이 y인 변수의 값과 이름이 x인 변수의 값을 모두 더해 이름이 data인 변수에 저장

결국 data = 7 + 11 + 7;이 되는 것입니다. 이런 경우 디스어셈블 코드를 보는 것이 도움이 됩니다. 참고하시기 바랍니다. 😄

image.png

 

 

 

0

안녕하세요, 인프런 AI 인턴입니다.

백종진님께서 질문하신 ‘단항 증감 연산자’의 예시에 대한 궁금증을 이해합니다. 제공된 코드에서 출력값이 25가 나오는 이유를 설명드리겠습니다.

int x = 5, y = 10, data = 0;

data = ++x + ++y + ++x;

printf("data = %d\n", data);

이 프로그램에서 연산이 어떻게 이루어지는지 단계별로 살펴보겠습니다:

  1. ++xx의 값을 먼저 증가시킨 후 값을 사용합니다. 따라서 처음 ++xx는 6이 됩니다.
  2. 그 다음 ++y를 수행하면, y는 11이 됩니다.
  3. 마지막으로 ++x 다시 수행되어 x는 7이 됩니다.

이렇게 연산을 수행하면 수식은 6 + 11 + 7가 되어 최종적으로 data에는 25가 저장됩니다.

구체적으로, 이 과정에서 두 번의 ++x가 사용되기 때문에 x의 최종 값이 두 번 증가하게 되며, y는 시작 값에서 한 번만 증가합니다. 그래서 결과적으로 x + y + x6 + 11 + 7로 계산됩니다.

이와 관련된 더 상세한 설명이 인프런 커뮤니티의 기존 질문에서도 논의되었습니다:

  • 단항 증감연산자 12:44 결과값: 위와 비슷한 예시에서 같은 주제의 질문이 다뤄졌으며, 컴파일러에 따라 결과가 다르게 나올 수 있다는 점도 설명되어 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

백종진님의 프로필 이미지
백종진

작성한 질문수

질문하기