![](/img/trans.png)
[英]Can't initialize constexpr value from return value of constexpr 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.