c++ - 如何在 VS 2012 和 g++ 中获得 64 位长

标签 c++ visual-studio-2012 g++

当我运行程序的 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/

相关文章:

c++ - Visual Studio 2012 C++ 如何在 NMake 项目中添加编译器选项

windows - 为什么我在 Visual Studio 2012 中没有收到 64 位警告,除非我打开 "deprecated"编译器开关?

c++ - GCC 4.8.x 中的 Bug 处理灵活数组成员?

java - 为什么重写在 JAVA 中的工作方式与 C++ 有所不同?

c++ - 数据类型和结构

c++ - QMap 包含 return always true

c++ - 解析 SVG 变换属性的变换列表

c# - 编译查询错误 : there is no implicit conversion from entities to 'System. Data.Objects.ObjectContext

c++ - c++编译时的错误

machine-learning - 是否有用于并行执行和内存共享的 linux pthreads 的替代方案?