当我运行程序的 g++ 编译版本时,返回了正确的总和 18510000000。当我运行 VS 2012 编译程序时,返回 1330130816。任何人都可以解释为什么会这样,以及如何修复代码以适用于两种编译器吗?
#include <iostream>
using namespace std;
int main()
{
long sum = 0;
for(int i = 0; i < 15000000; i++) {
sum = sum + 1234;
}
cout << "sum = " << sum << endl;
return 0;
}
最佳答案
您的 VS 2012 正在针对 32 位整数进行编译,而 g++ 正在针对 64 位整数进行编译。使用 __int64 或 long long,或您的编译器需要强制执行 64 位整数的任何类型。
关于c++ - 如何在 VS 2012 和 g++ 中获得 64 位长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691348/