3

我认为在标准 ML 中:

  • int 在 32 位 Linux 上是 32 位

在 64 位 linux 上,int 也是 32 位的吗?此外,对于标准 ML,是否有一个地方(url)概述了不同数据类型的大小?谢谢

4

4 回答 4

5

整数的大小是特定于实现的——标准没有规定。根据其文档,在 MoscowML 中,在 32 位平台上使用 31 位整数,在 64 位平台上使用 63 位整数。

SML/NJ 显然在 64 位和 32 位系统上都使用 31 位整数(我这么说显然是因为我没有在任何地方找到这个文档——我只是在我的 64 位机器上测试了它)。

在 MLton 中,甚至可以使用-default-type编译器的命令行参数设置 Int 的大小。

于 2012-08-29T09:15:50.533 回答
3

您可以使用Int.precision来确定内置Int类型的大小。

类型的大小Int不是语言定义的,而是实现定义的,因此您要寻找的答案取决于您选择的编译器/解释器。

例如,Moscow ML 在 32 位机器上提供 31 位整数,在 64 位机器上提供 63 位整数。来源

请注意,许多实现提供了几种 int 类型,其中一些可能是任意精度的。对于这些中的每一个,precision将存在一个相应的函数来告诉您该给定类型提供的精度。

于 2012-08-29T09:16:43.613 回答
2

请注意,高端 SML 实现Poly/ML默认提供无界(大)整数,因此您可以获得一个忠实的数学整数模型,而无需担心(通常的符号应用程序的正确性和效率)。

于 2013-02-28T21:49:00.917 回答
-1

32 位或 64 位是指地址的维度。所以数据类型的大小相同,但指针大小会发生变化,因为 64 位系统使用 64 位来寻址内存

于 2012-08-29T08:54:32.713 回答