단항 증감 연산자 예시 정답
단항 증감 연산자 수업에서 예시로 들었던...
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로 계산됩니다.
이와 관련된 더 상세한 설명이 인프런 커뮤니티의 기존 질문에서도 논의되었습니다:
- 단항 증감연산자 12:44 결과값: 위와 비슷한 예시에서 같은 주제의 질문이 다뤄졌으며, 컴파일러에 따라 결과가 다르게 나올 수 있다는 점도 설명되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
scanf("%d\n") 의미
0
20
1
주소 연산자(&) 간접 지정자(*) 반대 개념
0
33
1
Virtual Memory, Memory, Memory mapping tables
0
51
1
샘플코드 출력 오류 발생 질문드립니다
0
63
2
값의 교환에 사용되는 변수의 위치.
0
88
2
메모리 비교에 관한 질문
0
81
2
문자열 Null
0
63
1
C, C++
0
89
2
문자열 입출력 코드 에러
0
60
2
선생님! 120화 2분 50초 질문입니다.
0
67
1
caller 가 메모리 할당 해제를 할 때의 문제점 질문
0
64
2
단축키 맞는지 여부 문의드립니다.
0
61
2
문자열을 사용하는 이중 포인터에 대하여 질문합니다
0
66
1
char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요
0
78
2
용어 설명 필요
0
57
2
stdin, stdout
0
71
2
필수 실습 (최댓값을 반환하는 함수)
0
93
2
아......ㅠㅠ
0
100
2
버퍼 내 엔터
0
73
1
2진수 뺄셈에서 carry-out
0
112
2
union 식별자는 실무에서 보통 어디에서 사용하나요?
0
80
2
필수실습문제 공부법 (진도 vs 복습)
0
104
2
예제파일 다운로드
0
79
2
Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?
0
120
3





