인프런 커뮤니티 질문&답변
sum+=arr[i] 합계 문의
해결된 질문
작성
·
139
·
수정됨
답변 2
0
안녕하세요,
2가지를 혼동해서 헷갈리고 계십니다.
인덱스(i)와 인덱스를 통한 배열의 값 (arr[i])은 다릅니다.
지금 보시면 계산을 i 그 자체로 하고 계십니다.
arr[0]은 0이 아니라 1입니다. arr의 0번째 인덱스는 arr의 배열의 첫번째 요소입니다.
그래서 arr[0], arr[1], ... , arr[4]는 1, 2, 3, 4, 5를 가리킵니다.
arr[5]로 접근하는 순간 배열의 밖을 접근하기 때문에 오류가 발생하거나 쓰레기값(그 전에 다른 프로그램에 의해서 메모리 주소에 값이 있을 경우)을 가져올 수 있습니다.
그래서 첫번째 요소부터 맨 끝의 요소까지 더해서 15가 됩니다.
시험에서 자주 헷갈리도록 유도되는 문제입니다.
배열의 인덱스 그 자체와, 인덱스로 접근하는 배열의 값을 헷갈리시면 안됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. dbgud85님.
for 루프와 관련된 질문을 해주셨네요. Loop를 통해 합계를 구할 때, 각 루프 회차마다 sum에 새로운 값을 더하고 그 값들이 누적됩니다. 즉, sum은 이전까지 더해진 값에 다음 배열 요소 arr[i]를 더한 값이 됩니다. 따라서, sum이 차례대로 계산되는 과정은 다음과 같이 이루어집니다:
- 시작하면서 초기
sum값은 0입니다.
i=0일 때,sum += arr[0]로 인해sum은0 + arr[0]이 되어arr[0]값이 저장됩니다.
i=1일 때,sum += arr[1]로 인해sum은 이전 값 +arr[1]이 됩니다.
- 이러한 과정이 각 반복마다 이루어지며, 마지막 배열 요소까지 계산이 완료되면
sum은 모든 요소의 합을 가진 최종 값이 됩니다.
질문해주신 내용과 관련된 유사한 설명을 포함한 질문 및 답변을 소개합니다:
- 비전공자, 반복문 헷갈리는 이유 - 이 질문에서는 반복문과 누적 합계의 메커니즘에 대한 더 깊은 설명이 제공됩니다.
- switch -case - 반복문과 조건문을 포함한 계산 과정을 이해하는 데 도움이 됩니다.
for 루프에서 sum =+ arr[i] 같은 구문이 배치될 때, + 기호가 다른 수식과 결합하여 결과에 영향을 미치지는 않는지 확인하는 것도 좋습니다. 계산이 원하는 대로 되는지 디버깅을 통해 중간 상태를 자주 검토하는 습관을 가지시면 오류를 줄이는 데 도움이 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





