有趣的bug? 在OSX中预装Ruby(1.8.7)

2**2 => 4 2**63 => -9223372036854775808 2**63 + 2**63 => -18446744073709551616 

64及其后的所有内容返回0

 2**64 => 0 2**65 => 0 2**100 => 0 2**1000 => 0 

相同版本在Linux上运行良好。

有什么线索吗?

在64位模式下运行OSX 10.8.2。

没有RVM / Rbenv。

Ruby 1.9.3效果很好。

这是Ruby实现的一个错误 ,已经由补丁358修复。

这是因为乘法的返回值被声明为volatile ,这意味着无法进行优化 。 默认的C优化不会导致溢出 ,因此删除了volatile关键字。

在Ruby 1.9.3上正常工作 。