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

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

지혜님의 프로필 이미지
지혜

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

증감 연산자

while문 증감 연산자 질문 드립니다 ㅜㅜ

작성

·

103

·

수정됨

0

 

i = 0;

while (i++ < 10) {

System.out.println(i);

}

이 while 문을 출력하면 콘솔에 1부터10까지 10번 출력이 나오는데요 i++ 붙은 증감 연산자가 뒤에 있으니까 0부터9까지 10번 나와야 하는게 아닌가요?ㅜㅜ

for문에서는 for(int i=0; i<10; i++){}이럴경우 0부터9까지 10번 실행이되는데 왜 다른가요...헷갈려요 선생님

답변 2

0

안녕하세요. 지혜님, 공식 서포터즈 y2gcoder입니다.

i = 0;

while (i++ < 10) { // 평가 i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, (10 -> X)

    System.out.println(i); // 출력 당시 i = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

}

AI 인턴이 잘 말해주었다고 생각합니다!

위는 AI 인턴이 말한 바를 주석으로 표시해봤습니다!

감사합니다.

0

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

지혜님께서 질문하신 내용은 while 문과 for 문의 증감 연산자에 대한 차이를 이해하는 데 도움이 될 것입니다. 두 개의 연산 방식이 약간의 차이가 있어 사용자가 헷갈릴 수 있습니다. 연산자 자체와 증감 위치에 따른 값 변화 때문에 발생한 혼동에 대해 설명해 드리겠습니다.

while (i++ < 10)for (int i=0; i<10; i++)의 차이를 살펴보겠습니다:

  1. 후위 연산자(i++) 사용:

    • while (i++ < 10)에서 i++는 현재 i의 값을 평가한 후에 i를 1 증가시킵니다. 이 경우 i가 0일 때 while 조건문은 0 < 10을 평가하고 나서 i를 1 증가시키므로, System.out.println(i);는 1을 출력합니다. 따라서 반복문은 1부터 10까지 출력하게 됩니다.
  2. 증감 연산과 평가:

    • for (int i=0; i<10; i++)의 경우는, i가 증가한 후의 값이 for 루프의 조건에서 사용됩니다. 처음 i0이고, 조건에서 i < 10을 만족하는 동안 루프가 계속되며, i는 증가한 다음 조건이 다시 평가됩니다.

이러한 차이는 주로 연산자의 위치 때문에 발생합니다. 후위 증감 연산자 (i++)는 가장 가까운 연산을 수행하고 나서 증가시키기 때문입니다.

좀 더 나중에 나오는 평가에서 증가된 값을 활용하기 때문에, while문에서는 조건을 먼저 평가하고 나서 i를 증가시켜 1부터 시작하게 되며 10에서 멈추게 되는 현상이 발생합니다. 반면 for문은 증감이 조건 평가 후에 이뤄집니다.

비슷한 질문에 대한 설명이 담긴 링크를 통해 더 깊이 있는 이해를 도와드릴 수 있습니다:
while문 증감 연산자 질문 - 이 링크에서는 유사한 상황을 다루면서, while문과 for문의 차이점에 대해 설명합니다.

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

지혜님의 프로필 이미지
지혜

작성한 질문수

질문하기