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

C 和 Java 中数据类型的大小?

C 和 Java 中数据类型的大小?

犯罪嫌疑人X 2024-01-25 21:41:09
例如,C 中的数据类型 int 的大小为 2 个字节,而 Java 中的 int 的大小为 4 个字节,其他数据类型也是如此。为什么Java中数据类型的大小是double?
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

C 中数据类型的大小是特定于实现的。对于16位机器,int是2字节,对于32位机器,它是4字节,对于64位机器,它是4或8字节。(Windows 10 上的 Visual Studios 2019 产生 4 个字节,而 Linux 计算机上的 FCC 产生 8 个字节。)

要检查 int 大小,请使用“sizeof(int)”。

C 编译器还可以定义 int16_t、int32_t、int64_t,以及 int16、int32 和 int64,只是为了让事情变得有趣。当你将近半个世纪的历史强加到一种语言上时,就会发生这种情况。这就是为什么 sizeof 如此重要,因为对大小进行硬编码可能适用于一种编译器,但可能不适用于另一种编译器。


查看完整回答
反对 回复 2024-01-25
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

C 指定最小类型大小,并且不同实现之间使用的实际大小存在差异。另一方面,Java 指定了精确的类型大小,因此实现之间没有差异。

有些程序员总是喜欢指定每种类型的确切大小。如果您这样做,您可能会更喜欢 Java。或者,在 C 中,您可以包含标头<inttypes.h>并使用 C 的精确大小类型,例如int16_tint32_t

但在回答你的问题“为什么 Java 中的类型是两倍大?”时,这是无法回答的,因为问题的前提是有缺陷的。你说,“例如,在 C 中,int 是 2 个字节”,但事实并非如此。最小保证大小为 2 个字节,但在当今最流行的机器上为 4 个字节。


查看完整回答
反对 回复 2024-01-25
?
炎炎设计

TA贡献1808条经验 获得超4个赞

C 和 Java 对于可移植性有不同的方法。

由于编译后的 C 代码(通常)在本机运行,因此 C 规范避免强制指定特定大小,因为这会因不同机器而异。相反,它指定每种类型必须能够表示的最小值范围。An必须至少int能够表示range ,这意味着它必须至少有16 位宽,但也可以更宽。在现代桌面平台上,它通常是 32 位宽。[-32767..32767]

编译后的 Java 代码 OTOH(通常)在虚拟机(基本上是机器级解释器)中运行,并且指定 VM,以便类型始终具有固定大小。VM 负责将 Java 类型映射到本机计算机,因此在 16 位平台上运行的 VM 可能需要做一些有趣的操作来表示 32 位int.


查看完整回答
反对 回复 2024-01-25
  • 3 回答
  • 0 关注
  • 88 浏览

添加回答

举报

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