Eiffel 中整数的大小是多少?它如何处理溢出?
What is the size of an integer in Eiffel? How does it handle overflow?
在 Eiffel 中,INTEGER
类型的大小是多少?
我找不到它,除了 here,它声称大小是 32 位。
在这种情况下,Eiffel 是如何处理溢出的?它是像 C 中那样的未定义行为吗?或者有没有防止溢出的机制?
如果有任何我可以找到的资源,请告诉我。
根据 ECMA standard INTEGER
is defined as an alias for one of the sized variants of integer classes with the recommended size of 64 bits. However, because there is a lot of existing code, current implementations still use 32-bit integers for INTEGER
. The size can be set by a compiler option (e.g., EiffelStudio 使用埃菲尔配置文件 (ECF) 将 INTEGER
映射到 INTEGER_32
,这是在核心库 Base
中完成的。原则上,库或应用程序可以使用类型映射为 INTEGER
类型指定不同的大小。该机制不是埃菲尔语言规范的一部分,因此通常在需要特定尺寸时直接使用尺寸变体。
Eiffel 标准没有定义基本类型的精确行为,即从语言的角度来看,它们与任何其他类型一样被对待。据我所知,所有实现都不检查整数溢出或下溢,并默默地包装结果模数。
有几种基于库的解决方案可以提供任意精度的整数运算:
- factorial(1994 年,使用 TowerEiffel 1.3.1 测试)-
FACTORIAL
表示大整数值
- big_numbers(1998,用 SmallEiffel -0.80 测试)-
BIG_INTEGER
和一组其他数值 类
- eapml(Eiffel 任意精度数学库)(当代,包含在 contrib 下的标准 EiffelStudio 发行版中)-
INTEGER_X
- 任意精度整数
- dcm(当代,包含在 contrib 下的标准 EiffelStudio 发行版中)和 gobo(当代,Gobo 框架的一部分,包含在 contrib[ 下的标准 EiffelStudio 发行版中=41=]) -
DECIMAL
和 MA_DECIMAL
分别 - General Decimal Arithmetic Specification 之后的十进制数
在 Eiffel 中,INTEGER
类型的大小是多少?
我找不到它,除了 here,它声称大小是 32 位。
在这种情况下,Eiffel 是如何处理溢出的?它是像 C 中那样的未定义行为吗?或者有没有防止溢出的机制?
如果有任何我可以找到的资源,请告诉我。
根据 ECMA standard INTEGER
is defined as an alias for one of the sized variants of integer classes with the recommended size of 64 bits. However, because there is a lot of existing code, current implementations still use 32-bit integers for INTEGER
. The size can be set by a compiler option (e.g., EiffelStudio 使用埃菲尔配置文件 (ECF) 将 INTEGER
映射到 INTEGER_32
,这是在核心库 Base
中完成的。原则上,库或应用程序可以使用类型映射为 INTEGER
类型指定不同的大小。该机制不是埃菲尔语言规范的一部分,因此通常在需要特定尺寸时直接使用尺寸变体。
Eiffel 标准没有定义基本类型的精确行为,即从语言的角度来看,它们与任何其他类型一样被对待。据我所知,所有实现都不检查整数溢出或下溢,并默默地包装结果模数。
有几种基于库的解决方案可以提供任意精度的整数运算:
- factorial(1994 年,使用 TowerEiffel 1.3.1 测试)-
FACTORIAL
表示大整数值 - big_numbers(1998,用 SmallEiffel -0.80 测试)-
BIG_INTEGER
和一组其他数值 类 - eapml(Eiffel 任意精度数学库)(当代,包含在 contrib 下的标准 EiffelStudio 发行版中)-
INTEGER_X
- 任意精度整数 - dcm(当代,包含在 contrib 下的标准 EiffelStudio 发行版中)和 gobo(当代,Gobo 框架的一部分,包含在 contrib[ 下的标准 EiffelStudio 发行版中=41=]) -
DECIMAL
和MA_DECIMAL
分别 - General Decimal Arithmetic Specification 之后的十进制数