열혈강의 반복문 n! 질문이욤
싸리
/* practice 7-4 문제2 */
#include stdio.h
int main(void)
{
int n, i;
int result;
for( ; ; )
{
printf(factorial : );
scanf(%d, &n);
for(i=1,result=1; i=n; i++)
result = result * i;
printf(결과값 : %d\n\n\n, result);
}
return 0;
}
답인데여 제가 for문전에 result를 1로 초기화하고 실행을 하면 누적된 n! 값이 나오고 for문안에 result를 1로 초기화하면 정상적으로 출력이 되는데 왜그런건지좀 ㅠ
-
딥체리
그렇게 하실려면 변수를 넣는 곳에 Resultd로 정하지 마시고요 다른 변수를 넣으셔요. 그러면 컴퓨터가 혼동을 하지 않아서 값도 축적이 안되겠조?
-
터큰
책에서하는말은 두번째 포문 들어가기전에 초기화해준다는 말입니다.
result=1;
for(i=1; i = n ; i++)
result = result*i;
이렇게 하거나
i=1;
for(result=1; i = n ; i++)
result = result*i;
이렇게 하거나 결과는 같다는 말이죠...
i=1;
result=1;
for( ; i = n ; i++)
result = result*i;
물론 이렇게 해도 결과는 같겠죠.. -
핫보라
제가 대충 Result변수를 선언과 동시에 1로 초기화해주고 2번째 for문에 i갑만 1로 초기화해주고 실행을 하였는데 누적된 값이 나와서 질문드리는거인데여
책에는 둘중 하나를 for문 들어가기 전에 초기화해 줘도 결과는 같다고 나와있어서 ㅠ -
텃골돌샘터
아 안경님 감사합니다
-
조으다
제가 실행해본 결과 아마도 for문 전에 먼저 1를 초기화 하면 for문 안에서 똑같은 변수인 Result에 변화된 값이 축적되서 계속 그 값으로 초기화 되는것 같은데요?
-
누리별
그런데 정확히 전과 후의 소스를 동시에 올려주시면 알거 같은데 이건 어떤 말인지 헷갈리네요.
-
핫블루
아 그렇군요. 정확한 답변은 밑에다가 달게요.
-
다한
질문자 분은 그것을 말하는게 아닌듯 한대요
-
봄여우
원래 지역 변수는 초기화 값을 정하지 않으면 쓰레기 값으로 출력됩니다. 정 값을 정하지 않고 하실려면
전역 변수를사용하세요. 전역변수는 초기화값을 입력하지 않으면 0으로 인식하여 출력 됩니다.