답은 120.000이던데 잘못된거 아닌가요?
처음부터 1 *= 0이 돼서 p는 0이 되고 계속해서 0에다 1~4까지 곱하니 결국엔 0.000이 돼야하는거 아닌가요?
안녕하세요 길벗수험서 운영팀입니다.
for문의 수행 순서를 알아두실 필요가 있습니다.
for문을 간략화 시키면 다음과 같습니다.
for(①; ②; ③)
④;
for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
이것을 문제의 for문에 적용시키면
실행 코드가 없으니 ④번이 사라지고, ③번이 두 개로 늘어나겠네요.
1회 : ①, ②(조건 참)
2회 : ③-1 ③-2, ②(조건 참)
3회 : ③-1 ③-2, ②(조건 참)
4회 : ③-1 ③-2, ②(조건 참)
5회 : ③-1 ③-2, ②(조건 참)
종료 : ③-1 ③-2, ②(조건 거짓) <탈출>
회원님은 첫 회전에 0이 곱해져서 결과로 0이 될 수밖에 없다고 하셨으나,
위의 순서대로 코드를 수행하게 되면,
i=0 -> i<5 -> i++ -> p*=i -> ....
가 됩니다. p에 처음 곱해지는 i의 값은 중간에 수행되는 i++로 인해 0이 아닌 1이 되는 것이죠.
혹여나 후치연산 때문에 나중에 수행되는 것이 아니냐 물으신다면,
전치/후치 증감 연산자가 식에 영향을 주는 것은 '하나의 식' 안에서 뿐입니다.
즉, sum = sum + i++; 과 같이 세미콜론(;) 또는 쉼표(,)로 구분되는 각 식 내에서만 전/후가 의미가 있을 뿐,
위와 같이 쉼표로 구분되어 개별로 사용될 때는 그저 1을 증가시키는 역할 외에 다른 역할을 수행하지 못합니다.
행복한 하루되세요 :)
-
관리자2022-04-07 09:57:34
안녕하세요 길벗수험서 운영팀입니다.
for문의 수행 순서를 알아두실 필요가 있습니다.
for문을 간략화 시키면 다음과 같습니다.
for(①; ②; ③)
④;
for문이 5회 반복한다고 가정할 때 다음과 같이 각 부분이 수행됩니다.
1회 : ①, ②(조건 참), ④
2회 : ③, ②(조건 참), ④
3회 : ③, ②(조건 참), ④
4회 : ③, ②(조건 참), ④
5회 : ③, ②(조건 참), ④
종료 : ③, ②(조건 거짓) <탈출>
이것을 문제의 for문에 적용시키면
실행 코드가 없으니 ④번이 사라지고, ③번이 두 개로 늘어나겠네요.
1회 : ①, ②(조건 참)
2회 : ③-1 ③-2, ②(조건 참)
3회 : ③-1 ③-2, ②(조건 참)
4회 : ③-1 ③-2, ②(조건 참)
5회 : ③-1 ③-2, ②(조건 참)
종료 : ③-1 ③-2, ②(조건 거짓) <탈출>
회원님은 첫 회전에 0이 곱해져서 결과로 0이 될 수밖에 없다고 하셨으나,
위의 순서대로 코드를 수행하게 되면,
i=0 -> i<5 -> i++ -> p*=i -> ....
가 됩니다. p에 처음 곱해지는 i의 값은 중간에 수행되는 i++로 인해 0이 아닌 1이 되는 것이죠.
혹여나 후치연산 때문에 나중에 수행되는 것이 아니냐 물으신다면,
전치/후치 증감 연산자가 식에 영향을 주는 것은 '하나의 식' 안에서 뿐입니다.
즉, sum = sum + i++; 과 같이 세미콜론(;) 또는 쉼표(,)로 구분되는 각 식 내에서만 전/후가 의미가 있을 뿐,
위와 같이 쉼표로 구분되어 개별로 사용될 때는 그저 1을 증가시키는 역할 외에 다른 역할을 수행하지 못합니다.
행복한 하루되세요 :)