c ++最大数字类型

thk*_*ang 2 c++

可能重复:
int,long等的大小
`long`保证至少为32位?

我想找出我的计算机的每种数据类型的最大值.代码是:

int main() {
    using namespace std;
    cout << numeric_limits<int>::max() << endl;
    cout << numeric_limits<long>::max() << endl;
    cout << numeric_limits<long long>::max() << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印:

2147483647
2147483647
9223372036854775807
Run Code Online (Sandbox Code Playgroud)

问题1:为什么intlong相同?

问题2:上面的输出来自64位的VS2010.我的c ++程序是否以64位运行?

Die*_*Epp 5

问题1:为什么int和long是一样的?

由于各种原因(方便),机器架构支持的整数大小往往是2的幂.大多数现代处理器本身可以使用8,16,32和64位整数.不过,也有五种常用的整数类型:char,short,int,long,和long long.所以其中两个必须具有相同的尺寸.

  • 在大多数16位平台,int并且short都是16位.

  • 在大多数32位平台,int并且long都是32位.

  • 在大多数64位平台,long并且long long都是64位.有一个例外......

问题2:上面的输出来自64位的VS2010.我的c ++程序是否以64位运行?

无法从这些数据中分辨出来.Windows是一个平台,longint有32位和64位程序的大小相同.