C++ 在我的C++;代码如果我在循环外打印sum,它会给出正确的答案,但在任何循环中都不会,为什么不呢? intmain() { long long int first=0,second=1,T,N;//这里T是案例数 cin>>T; 长整型晶圆=第一个+第二个; 长整型和[T]; 对于(长整型)i=0;i>N; 而(fab
未初始化C++ 在我的C++;代码如果我在循环外打印sum,它会给出正确的答案,但在任何循环中都不会,为什么不呢? intmain() { long long int first=0,second=1,T,N;//这里T是案例数 cin>>T; 长整型晶圆=第一个+第二个; 长整型和[T]; 对于(长整型)i=0;i>N; 而(fab,c++,C++,未初始化sum[T]变量。必须对其进行初始化: int main() { long long int first=0,second=1,T,N; //here T is Number of Cases cin>>T; long long int fab=first+second; long long int sum[T]; for(long long int i=0;i<T;i++) { cin>>N; whil
sum[T]
变量。必须对其进行初始化:
int main()
{
long long int first=0,second=1,T,N; //here T is Number of Cases
cin>>T;
long long int fab=first+second;
long long int sum[T];
for(long long int i=0;i<T;i++)
{
cin>>N;
while(fab<N)
{
first=second;
second=fab;
if(fab%2==0)
{
sum[i]+=fab;
}
fab=first+second;
}
}
for(int i=0;i<T;i++)
{
cout<<sum[i]<<endl;
}
return 0;
}
代码
long long sum[T] = {};
不是有效的C++。 谷歌搜索可变长度数组或动态数组。你可能会看到这样的答案
long long int sum[T];
这:
不是有效的C++。C++中的数组必须使用编译时表达式创建,以表示项目的数量,而不是变量,如<代码> t<代码> > < /P>
使用C++的标准结构是:C++ >代码> STD::向量< /代码>:
#包括
//...
cin>>T;
std::向量和(T);
代码现在是标准C++。 该代码所做的另一个方面是解决DietrichEpp在回答中提出的问题,即您未能将VLA初始化为0。上面的向量将为您自动将项目初始化为0
这个故事的寓意是,如果你使用标准C++,你可能不会有问题。你的代码不是NtPoice:VLA不是标准C++。我认为它不仅仅是一个挑剔的东西。如果OP使用了适当的C++构造,比如<代码> STD::向量< /代码>,而不是VLA,它们就不会有问题,永远不会有PO。测试这个问题。更可能的是
std::vector sum(T);
vector的默认选项也会将支持数组的值初始化为零,并使OP的问题消失。事实上,使用标准类型是一种很好的做法。不过,原始海报必须学习一些关于include指令和名称空间的知识才能使用std::vector。
long long int *sum = new long long int[T].
cin >> T;
long long int sum[T];
#include <vector>
//...
cin >> T;
std::vector<long long> sum(T);