c ++数字类型的最大值

可能重复:
int大小,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;
}

打印:

2147483647
2147483647
9223372036854775807

问题1:为什么intlong是相同的?

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


问题1:为什么int和long是相同的?

出于各种原因(便利性),由机器架构支持的整数大小往往是2的幂。 大多数现代处理器可以本地处理8,16,32和64位整数。 但是,有五种常用的整数类型: charshortintlonglong long 。 所以他们中的两个必须具有相同的尺寸。

  • 在大多数16位平台上, intshort都是16位。

  • 在大多数32位平台上, intlong都是32位。

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

  • 问题2:以上输出来自64位的VS2010。 我的c ++程序是以64位运行的吗?

    无法从这些数据中分辨出来。 Windows是longint对于32位和64位程序都具有相同大小的平台。


    它们输出相同,因为在Visual Studio中, intlong都是带符号的32位整数。 无论您是在构建64位还是32位二进制文​​件(Windows 64位遵循LLP64模型),情况都是如此,

    由于intlong的大小在Visual Studio上的32位和64位之间没有变化,因此无法从您提供的数据中知道您正在建立的是哪一个


    给定类型的最大值依赖于编译器。 C ++标准没有规定任何关于长必须是特定数量的位等等。

    然而,状态是什么呢?

    1 = sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)
    

    如果你正在寻找使用特定大小的整数,我会建议包括“inttypes.h”,并使用int_8t,int16_t,int32_t,int64_t等...

    链接地址: http://www.djcxy.com/p/40397.html

    上一篇: c++ maximum of number types

    下一篇: size of long int and int in C showing 4 bytes