有趣的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上正常工作 。