int i, hap=0
for(i=1; i<=10; ++i, hap+=i);
system.out.printf("%d, %d\n", i, hap);
이거 디버깅 하는데 왜 답이 11 , 65인가요
11, 66 아닌가요?
답지에 보면 i가 1일때 hap에 1이 안 더해지는데 왜그런지 모르겠어서 올립니다
안녕하세요 길벗수험서 운영팀입니다.
for문을 단순화 시켜 보죠.
for(①; ②; ③)
④;
for문이 총 5회 수행된다고 가정하면,
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
와 같이 됩니다.
이 것을 해당 코드에 적용하면, ④번이 사라지고, ③번이 두개로 늘어나겠네요.
1회 : ①, ②(조건 참)
2회 : ③-1 ③-2, ②(조건 참)
3회 : ③-1 ③-2, ②(조건 참)
4회 : ③-1 ③-2, ②(조건 참)
5회 : ③-1 ③-2, ②(조건 참)
종료 : ③-1 ③-2, ②(조건 거짓) <탈출>
위 방식대로 수행하면 i의 초기값은 ①번에서 주어지고, 이후 ③-1에서 1을 증가시킨 후, ③-2에서 2가 된 i의 값을 합산하면서 다음 과정을 수행을 하게 되죠. 때문에 1이 더해지는 일은 없습니다.
행복한 하루되세요 :)
-
관리자2021-04-13 10:27:56
안녕하세요 길벗수험서 운영팀입니다.
for문을 단순화 시켜 보죠.
for(①; ②; ③)
④;
for문이 총 5회 수행된다고 가정하면,
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
와 같이 됩니다.
이 것을 해당 코드에 적용하면, ④번이 사라지고, ③번이 두개로 늘어나겠네요.
1회 : ①, ②(조건 참)
2회 : ③-1 ③-2, ②(조건 참)
3회 : ③-1 ③-2, ②(조건 참)
4회 : ③-1 ③-2, ②(조건 참)
5회 : ③-1 ③-2, ②(조건 참)
종료 : ③-1 ③-2, ②(조건 거짓) <탈출>
위 방식대로 수행하면 i의 초기값은 ①번에서 주어지고, 이후 ③-1에서 1을 증가시킨 후, ③-2에서 2가 된 i의 값을 합산하면서 다음 과정을 수행을 하게 되죠. 때문에 1이 더해지는 일은 없습니다.
행복한 하루되세요 :)