【发布时间】:2016-12-08 15:36:10
【问题描述】:
我们知道 -2*4^31 + 1 = -9.223.372.036.854.775.807,可以存储在 long long 中的最低值,如这里所说:What range of values can integer types store in 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。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。