为了账号安全,请及时绑定邮箱和手机立即绑定

int的大小是否取决于编译器和/或处理器?

int的大小是否取决于编译器和/或处理器?

C++
千万里不及你 2019-07-09 13:21:44
int的大小是否取决于编译器和/或处理器?整数的大小是否取决于编译器、操作系统和处理器?
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

这个问题的答案取决于我们愿意得到多远的实际考虑。

从理论上讲,C和C+中的一切都取决于编译器,而仅仅取决于编译器。硬件/操作系统一点也不重要。编译器可以自由地实现任何厚度和绝对模仿任何东西。没有什么可以阻止C或C+实现int任何大小的类型和任何表示形式,只要它足够大以满足语言标准中规定的最低要求。这种抽象级别的实用示例是现成的,例如基于“虚拟机”平台的编程语言,如Java。

然而,C和C+的意图是高度高效率语言。为了达到最大的效率,C或C+实现必须考虑从底层硬件派生的某些考虑因素。因此,确保每个基本类型都基于硬件直接(或几乎直接)支持的某种表示是很有意义的。从这个意义上说,基本类型的大小确实取决于硬件。

换句话说,64位硬件/OS平台的特定C或C+实现是完全免费的。int作为一个71位1的补码符号整数类型,占用128位内存,使用其他57位作为填充位,这是总是需要存储编译器作者的女朋友的生日。这种实现甚至具有一定的实用价值:它可以用于执行C/C+程序可移植性的运行时测试。但这正是实现的实际效用所在。不要指望在“普通”C/C+编译器中看到类似的东西。


查看完整回答
反对 回复 2019-07-09
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

是的,会的。它们是否意味着“它将依赖于哪一个:编译器还是处理器”?在这种情况下,答案基本上是“两者兼而有之”。正常情况下,int不会大于处理器寄存器(除非小于16位),但它可以更小(例如,运行在64位处理器上的32位编译器)。但是,通常情况下,您将需要一个64位处理器来运行64位int的代码。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 714 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信