간단한 자바 반복문을 배우는 중인데, 증감연산자에 대해 잘 모르겠습니다

조회수 427회
public class Main {
    public static void main(String[] args) 
        int i=1,sum=0;

        while(i<=6) {
            sum+=i++;     }

        System.out.println("1부터 6까지의 합은 "+sum);
        }
}

1부터 6까지의 합을 구하는 코드입니다만 이해가 잘 되지 않습니다. 저 sum+=i++ 라는 문장은, 즉 1+1 2+1 3+1 4+1 5+1 6+1 -> 2+3+4+5+6+7 라는 뜻 아닌가요? 저 코드가 어떻게 1+2+3+4+5+6 으로 해석되는건지 모르겠습니다. while(i<=6) 으로 시작되는 반복문은 i가 1일때부터 6일때까지의 의미인 것으로 이해했는데, 이것도 잘못 알고 있는 걸까요?

1 답변

  • 후위 연산자 i++ 은 어떤 구문을 실행한 직후 변수 i에 1을 더하는 연산자입니다.

    sum += i++;
    

    위와 같은 구문은 곧 다음과 같은 등가 구문으로 바꿀 수 있습니다:

    sum = sum + i;
    i = i + 1;
    

    이러한 연산들을 i <= 6 인 동안 반복하면 sum 값은 21이 되게 됩니다.

    assert sum == 0 + 1 + 2 + 3 + 4 + 5 + 6; // 21; 참값
    

    while (...) { } 문을 사용하는 대신 편리한 for (...) { } 문을 활용하는 방법도 있습니다.

    int sum = 0;
    for (int i = 1; i <= 6; i++)
        sum += i;
    System.out.println("1부터 6까지의 합은 " + sum);
    
    // 혹은 더 간단하게
    int sum = 0;
    for (int i = 1; i <= 6; sum += i++);
    System.out.println("1부터 6까지의 합은 " + sum);
    

    참고: assert 키워드는 뒤따라오는 조건식이 참이라고 확언함으로써 프로그램의 신뢰성을 높이는 키워드입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)