32位linux和64位linux中的SML数据类型

时间:2012-08-29 08:49:54

标签: sml

我认为在标准ML:

  • int在32位linux上是32位

在64位linux上int也是32位吗?此外,对于标准ML,是否有一个位置(url),其中列出了不同数据类型的大小?感谢

4 个答案:

答案 0 :(得分:3)

整数的大小是特定于实现的 - 它没有由标准指定。根据{{​​3}},MoscowML在32位平台上使用31位整数,在64位平台上使用63位整数。

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

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

答案 1 :(得分:2)

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

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

例如,

莫斯科ML在32位机器上提供31位整数,在64位机器上提供63位整数。source

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

答案 2 :(得分:2)

请注意,默认情况下,高端SML实现Poly/ML提供无限(大)的整数,因此您可以毫无后顾之忧地获得数学整数的忠实模型(通常的符号应用程序的正确性和效率)。 / p>

答案 3 :(得分:-1)

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