부록 자바코드에서
1번
do
{
i++;
j += i;
} while( i < 100);
이 값과
2번
do
{
j += i;
i++;
} while( i <= 100);
질문.
1. 이 값이 다른가요?
2. 2번 do while 문에서 while 뒤에 조건이 "(i <=100)" 이 아니라 "(i < 99)" 이면 99까지 더한 값이 나오나요?
안녕하세요.
1번은 증가한 후 누적하는 것이죠.
2번은 누적한 후 증가하는 것입니다.
i의 초기값이 어떻게 주어지는지에 따라 j에 누적되는 값이 달라질 수 있습니다.
i가 0으로 초기화 된 상태에서 진행된다면
1번은
i++에 의해 1이 된 후 j += i에 의해 1이 j에 누적됩니다.
2번은
j += i에 의해 0이 j에 누적됩니다.
이후 i++에 의해 i는 1이 됩니다.
1회전 후 1번은 j에 1이, 2번은 j에 0이 저장됩니다.
하지만 i의 값은 동일하므로 반복되는 회수는 같습니다.
2번에서 i<=100으로 종료 조건을 두면
j+=i에 의해 j에는 99까지 누적되고
i++에 의해 i가 100인 상태에서
i<=100이 Yes가 되어 빠져나옵니다.
즉 i는 100이 아니라 99까지만 누적되는 것이죠.
하지만 1번은 100까지 누적됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-09-25 10:09:19
안녕하세요.
1번은 증가한 후 누적하는 것이죠.
2번은 누적한 후 증가하는 것입니다.
i의 초기값이 어떻게 주어지는지에 따라 j에 누적되는 값이 달라질 수 있습니다.
i가 0으로 초기화 된 상태에서 진행된다면
1번은
i++에 의해 1이 된 후 j += i에 의해 1이 j에 누적됩니다.
2번은
j += i에 의해 0이 j에 누적됩니다.
이후 i++에 의해 i는 1이 됩니다.
1회전 후 1번은 j에 1이, 2번은 j에 0이 저장됩니다.
하지만 i의 값은 동일하므로 반복되는 회수는 같습니다.
2번에서 i<=100으로 종료 조건을 두면
j+=i에 의해 j에는 99까지 누적되고
i++에 의해 i가 100인 상태에서
i<=100이 Yes가 되어 빠져나옵니다.
즉 i는 100이 아니라 99까지만 누적되는 것이죠.
하지만 1번은 100까지 누적됩니다.
오늘도 즐거운 하루 되세요.