繁体   English   中英

无法从 function 返回值?

[英]Can't return value from function?

我写了这段代码,但有一个我似乎无法解决的问题。 function 应该返回 T1 并从 main 中取出它,但它总是给我一个错误“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;
}

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

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

   return 0;
}

我不知道你是否在乎,但阶乘值会溢出。

因为 T1 没有在 main() scope 下定义,所以它只在 function阶乘的 scope 下定义。

你应该这样做:

cout<<factorial()<<endl;

或在您的主要function 中像这样定义 T1:

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

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

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

cout<<T1<<endl;

return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM