代码[GCC,使用 -O2 标志编译]
int main()
{
vector< vector<int> > matrixa(8);
int ff = 5;
int s = pow(ff, matrixa.size());
int ss = pow(double(ff), int(matrixa.size()));
vector< vector<int> > comb(s);
cout << ff << "^" << matrixa.size() << " = " << s << endl;
cout << ss << endl;
return 0;
}
输出
5^8 = 390624
390625
我想知道为什么s = 390624
它应该是什么时候390625
。如果我编译没有 -O2 标志的代码,那么s = 390625
. 此外,铸造ss
似乎纠正了这个问题。
这是怎么回事?
我的操作系统是 Windows 7 Ultimate x64。不确定 GCC 版本,它带有 Code::Blocks 10.05。