这个问题的答案取决于我们愿意脱离实际考虑的程度。
最终,理论上,C 和 C++ 中的一切都取决于编译器,并且仅取决于编译器。硬件/操作系统根本不重要。编译器可以自由地实现硬件抽象层any厚度并模仿任何东西。没有什么可以阻止 C 或 C++ 实现实现int
任何大小和任何表示形式的类型,只要它足够大以满足语言标准中指定的最低要求。这种抽象级别的实际例子很容易获得,例如基于“虚拟机”平台的编程语言,例如Java。
然而,C 和 C++ 的目的是高度高效的语言。为了实现最大效率,C 或 C++ 实现必须考虑源自底层硬件的某些考虑因素。因此,确保每种基本类型都基于硬件直接(或几乎直接)支持的某种表示形式是很有意义的。从这个意义上说,基本类型的大小确实取决于硬件。
换句话说,64 位硬件/操作系统平台的特定 C 或 C++ 实现完全可以自由实现int
作为占用 128 位内存的 71 位 1 补码有符号整数类型,使用其他 57 位作为填充位,这些填充位始终需要存储编译器作者女朋友的生日。这个实现甚至还有一定的实用价值:它可以用来对C/C++程序的可移植性进行运行时测试。但该实现的实际用途就到此为止了。不要指望在“普通”C/C++ 编译器中看到类似的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)