답안을 봐도 이해가 안되는게 for문에서 i=0부터 일때와 i=1일때부터의 값이 1이 차이가 나는데 저는 아무리 해봐도 동일한 값이 나오거든요
int i, hap = 0;
for(i=0; i <=10; ++i, hap +=i);
i hap
0 0
1 1
2 3
3 6
4 10
int i, hap = 0;
for(i=1; i <=10; ++i, hap +=i);
i hap
1 1
2 3
3 6
4 10
이렇게 되야하는거 아닌가요?
답안에서 두번째 for문의 값이
i hap
1 0
2 2
3 5
4 9
이런식으로 지정되어있는데 처음 hap +=1은 왜 계산을 안하고 0으로 지정하는지 이해가 안됩니다. 순서대로 진행하면 i=1이 지정됬고 10보다 작기때문에 hap +=1을 계산해서 1이 나와야 하는거 아닌가요?
안녕하세요.
for(i = 1; i <= 10; ++i, hap += i);
를 수행한 경우
i hap
1, 0
2, 2
3, 5
4, 9
5, 14
6, 20
7, 27
8, 35
9, 44
10, 54
for(i = 0; i <= 10; ++i, hap += i);
를 수행한 경우
i hap
0, 0
1, 1
2, 3
3, 6
4, 10
5, 15
6, 21
7, 28
8, 36
9, 45
10, 55
입니다.
for문에서는 먼저 초기값을 가지고 반복문을 한 번 수행한 후 증가값을 적용합니다.
아래쪽 for문에서
i는 0인 상태로 for문을 수행합니다. 수행할 for문 안쪽 내용이 없으므로 for문의 회전수만 증가합니다.
그래서 i가 0인 상태로 for문이 한 번 회전했을 때 i는 0, hap은 0입니다.
이제 for문이 한 번 회전한 후 증가값(++i, hap += i)를 수행하여, i는 1이되고 hap도 1이 됩니다.
종료기준값(i<=10)을 만족하므로 for문을 수행하여 for문의 회전수를 증가합니다.
그래서 i가 1인 상태로 for문이 두 번 회전했을 때 i는 1, hap은 1입니다.
위의 내용을 기준으로 for문의 반복 과정을 이해한 후 다시 한 번 디버깅을 수행해 보세요.
오늘도 즐거운 하루 되세요.
-
*2018-03-28 09:40:54
안녕하세요.
for(i = 1; i <= 10; ++i, hap += i);
를 수행한 경우
i hap
1, 0
2, 2
3, 5
4, 9
5, 14
6, 20
7, 27
8, 35
9, 44
10, 54for(i = 0; i <= 10; ++i, hap += i);
를 수행한 경우
i hap
0, 0
1, 1
2, 3
3, 6
4, 10
5, 15
6, 21
7, 28
8, 36
9, 45
10, 55입니다.
for문에서는 먼저 초기값을 가지고 반복문을 한 번 수행한 후 증가값을 적용합니다.
아래쪽 for문에서
i는 0인 상태로 for문을 수행합니다. 수행할 for문 안쪽 내용이 없으므로 for문의 회전수만 증가합니다.
그래서 i가 0인 상태로 for문이 한 번 회전했을 때 i는 0, hap은 0입니다.
이제 for문이 한 번 회전한 후 증가값(++i, hap += i)를 수행하여, i는 1이되고 hap도 1이 됩니다.
종료기준값(i<=10)을 만족하므로 for문을 수행하여 for문의 회전수를 증가합니다.
그래서 i가 1인 상태로 for문이 두 번 회전했을 때 i는 1, hap은 1입니다.
위의 내용을 기준으로 for문의 반복 과정을 이해한 후 다시 한 번 디버깅을 수행해 보세요.
오늘도 즐거운 하루 되세요.