2016-03-05 47 views
-3

没有编译器错误,但我没有看到来自printf的语句(循环之后)。循环之前的printf是很好的。我无法解决这个问题。printf不工作为什么?

int prime(int n); 


    int main(void) 
    { 
     int num = 0; 
     bool prime; 
     int n; 
     int count; 
     int sum; 

     printf("Enter the limit:", n); 
     scanf("%d", &n); 
     printf("Primes up to %d\n", n); 


     // loop 
     for(int i =2; i <= n; i++) 
     { 
      prime = true; 
      for(int j =2; j < i; j++) 
      { 
       if(i%j == 0) 
       { 
        prime = false; 
        break; 
       } 
      } 
      if(prime) 
      { 
       num += i; 
       printf("%d ", i); 

      } 
     } 
     return num; 
     count++; 
     sum += count; 
     // sum of primes 

     printf("Number of primes: \n", sum); 
    } 

这是为什么?

+0

'return num;':此行终止函数执行。它将在执行后没有任何内容。 –

+0

谢谢,我不知道。 – blacklune

+0

编译时是否启用了所有警告('-Wall -Wtratra')?你的编译器应该告诉你一些关于'printf'调用和未初始化的变量。那是什么'int prime(int n);'关于什么?此外,这看起来不像C++。 – 5gon12eder

回答

5

因为你之前return num,这意味着它结束你的功能之前。如果将函数的结尾更改为:

count++; 
sum += count; 
// sum of primes 

printf("Number of primes: \n", sum); 
return num; 
+0

谢谢,我不知道。 – blacklune