2014-05-12 2 views
0

C- 언어로 기본 계승 예제 프로그램을 만들려고 노력하고 있지만 작동하는 있지만 다음과 같은 프로그램이 == 비교 연산자와 제대로 작동하지 않는 이유를 이해할 수 없습니다. < = 연산자로 완전히 괜찮습니다.for 루프 (C 언어)에서 비교 연산자

비 기능적 버전 :

#include <stdio.h> 

int main() 
{ 

    int i, n, fact=1; 

    printf("Enter a number:"); 
    scanf("%d", &n); 

    for(i=1; i==n; i++) 
     { 
      fact=fact*i; 
     } 

     printf("Factorial of %d is %d", n, fact); 

    return 0; 

} 

기능 버전 : 사전에 이미

#include <stdio.h> 

int main() 
{ 

    int i, n, fact=1; 

    printf("Enter a number:"); 
    scanf("%d", &n); 

    for(i=1; i<=n; i++) 
     { 
      fact=fact*i; 
     } 

     printf("Factorial of %d is %d", n, fact); 

    return 0; 

} 

감사합니다!

+2

두 번째 명령문이 true 인 경우에만 루프를 시작합니다. '0 == n'은 박쥐 오른쪽에서 거짓입니다. – Mephy

+1

아래에 몇 가지 훌륭한 해답이 있지만 초기 버전이 효과가 있다고 생각하는 이유를 설명하려고하면 이해에 조금 도움이 될 수 있습니다. –

답변

3

for 루프의 조건은 while 조건 :

int i = 1; 
while(i == n) 
{ 
    //loopbody 
    fact=fact*i; 
    i++; 
} 

그래서 그것은 단지 아무것도 n==1을 할 것입니다, 플러스 루프는 0 또는 1 번 실행할 수 있습니다.

2

for의 테스트는 것이다에만 루프

for(i=1; i==n; i++) 

루프 심지어 첫 번째 루프

for (i = 1; i == 6; i++) { 
    // loop will never execute as i is not 6 even before the first loop 
} 
2

전에 체크 한 동일 i로하고 n. n1을 입력하면 루프가 실행되지 않습니다. 1을 입력하면 i2이되어 더 이상 n과 같지 않으므로 한 번만 반복됩니다.