![](/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.