我们知道 -2*4^31 + 1 = -9.223.372.036.854.775.807,可以存储在 long long 中的最低值,正如这里所说:整数类型可以在 C++ 中存储的值范围。所以我有这个操作:
#include <iostream>
unsigned long long pow(unsigned a, unsigned b) {
unsigned long long p = 1;
for (unsigned i = 0; i < b; i++)
p *= a;
return p;
}
int main()
{
long long nr = -pow(4, 31) + 5 -pow(4,31);
std::cout << nr << std::endl;
}
为什么它显示 -9.223.372.036.854.775.808 而不是 -9.223.372.036.854.775.803?我正在使用 Visual Studio 2015。