"..4294967173" 当我在 1.8.7 上执行此操作时,我得到以下结果: "..18-6ren">
gpt4 book ai didi

ruby - 这个 sprintf 调用在 1.9.2 中中断了吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:34:34 27 4
gpt4 key购买 nike

Kernel#sprintf的底部的文档它有这个例子:

sprintf("%u", -123) #=> "..4294967173"

当我在 1.8.7 上执行此操作时,我得到以下结果:

"..18446744073709551493"

这与预期的输出相似,但绝对不是。

但是,当我在 1.9.2 上执行此操作时,我得到了与字符串相同的数字:

ruby-1.9.2-p136 :001 > sprintf("%u", -123)
=> "-123"

所以这里实际上有两个问题。

  1. 为什么我会得到与文档中所说的不同的输出

  2. 为什么 Ruby 1.9.2 的行为与 1.8.7 不同,即使文档对输出类型非常具体?

最佳答案

1.8 documentation表示 %u 用于 32 位无符号整数,而您在 64 位无符号整数上看到它,因此该行为已关闭。 1.9 documentation表示 %u%d 相同,因此该行为是正确的。

关于ruby - 这个 sprintf 调用在 1.9.2 中中断了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com