这个程序有问题吗,为什么用Dev-C++5.2.0.3调试无法通过

#include<iostream>
#include<array>
using namespace std;
int main(){
int i;
array<long double, 16>fact;
fact[1]=fact[0]=1ll;
for(i=2;i<=16;i++)
fact[i]=i*fact[i-1];
for(i=0;i<=16;i++)
std::cout<<i<<"!="<<fact[i]<<std::endl;
return 0;
}

#include<iostream>
#include<array>
using namespace std;
int main(){
int i;
array<long double, 16>fact; //数组是16个,改为array<long double, 17>fact;
fact[1]=fact[0]=1ll;
for(i=2;i<=16;i++)  //i=16的时候,边界溢出了,所以打印出现的结果是错的。
fact[i]=i*fact[i-1];
for(i=0;i<=16;i++)
std::cout<<i<<"!="<<fact[i]<<std::endl;
return 0;
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网