无法从函数返回值?

时间:2011-05-02 02:42:33

标签: c++ return-value

我写了这段代码,但是有一个问题似乎无法解决。该函数应该返回T1并从主函数cout它,但它总是给我一个错误“T1是未声明的标识符”。为什么?

#include<iostream>
#include<math.h>
#include<time.h>
using namespace std;
double factorial()
{
   int i;
   double T1,total=0;
   for(i=0;i<200;i++) 
   {
      clock_t start = clock();

      int a,N,f;
  N=99999;
      f=N;
  for(a=N-1;a>0;a--)
  {
         f=f*a;
      }

      clock_t end = clock();
      T1=double(end-start)/(double) CLOCKS_PER_SEC;
      total=total+T1;
   }
   T1=total/200;
   return T1;
}
int main()
{
   factorial();
   cout<<T1<<endl;

   return 0;
}

3 个答案:

答案 0 :(得分:3)

每个函数只知道局部变量(和全局变量,你没有任何定义)。您必须在main中为结果创建一个变量:

int main()
{
   double answer = factorial();
   cout << answer << endl;

   return 0;
}

我不知道你是否在意,但是因子值会溢出。

答案 1 :(得分:3)

由于T1未在main()范围内定义,因此仅在函数 factorial 的范围内定义。

你应该这样做:

cout<<factorial()<<endl;

或在函数中定义这样的T1:

double T1 = factorial();
cout<<T1<<endl;

答案 2 :(得分:1)

您必须首先在本地定义T1或将其设为全局变量(不推荐)。

int main()
{
double T1=factorial();

cout<<T1<<endl;

return 0;
}