对于我的一项 C++ 编程作业,我在设计程序时必须考虑整数变量的大小。我在互联网上阅读,大多数地方都说“整数的大小取决于平台”。我不太明白这是什么意思,所以在这里问。
什么决定了原始数据类型的大小?
在某些系统中选择大小为
2 byte
的整数,而在其他系统中选择大小为 4 byte
的整数的原因是什么?有什么原因不能再继续处理 2 字节吗? 他们在这里指的平台是什么。
通常是指操作系统、编译器以及编译器的一些特殊选项的组合。
决定原始数据类型大小的原因。
这将是“以上的组合。”
顺便说一句,这被称为“内存模型”或“数据模型”(不确定哪个是正确的术语),您可以从http://en.wikipedia.org/wiki/64-了解更多信息一点
看来您的第一个问题已经得到解答,所以我将尝试第二个问题:
在某些系统中选择整数大小为 2 字节,而在其他系统中选择 4 字节大小的原因是什么?有什么原因无法再继续处理 2 个字节吗?
这归结为架构(或编译器等)设计者的意见。通常,内存地址表示为
unsigned integer
数据类型。因此,您会得到 integer
大小的有趣历史记录,它反映了操作系统中地址的大小。也就是说,这确实不是巧合:
cout << "Unsigned short: " << sizeof(unsigned short) << endl;
cout << "Unsigned int: " << sizeof(unsigned int) << endl;
cout << "Unsigned long: " << sizeof(unsigned long) << endl;
在大多数系统上产生以下输出:
Unsigned short: 2
Unsigned int: 4
Unsigned long: 8
因为一个字节是 8 位,所以你得到以下大小:
你可以打赌,如果我们使用 128 位操作系统,将会有一个由 16 个字节组成的数据类型(也许
unsigned long long
?)。
所以从某种意义上说这是历史,但是为什么建筑师要决定这些尺寸呢? 嗯,有几个原因:
integer