해결된 질문
작성
·
20
·
수정됨
답변 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
은 모든 요소의 합을 가진 최종 값이 됩니다.질문해주신 내용과 관련된 유사한 설명을 포함한 질문 및 답변을 소개합니다:
for
루프에서 sum =+ arr[i]
같은 구문이 배치될 때, +
기호가 다른 수식과 결합하여 결과에 영향을 미치지는 않는지 확인하는 것도 좋습니다. 계산이 원하는 대로 되는지 디버깅을 통해 중간 상태를 자주 검토하는 습관을 가지시면 오류를 줄이는 데 도움이 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.