我认为在标准ML:
在64位linux上int也是32位吗?此外,对于标准ML,是否有一个位置(url),其中列出了不同数据类型的大小?感谢
答案 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位来寻址内存