请考虑这个片段(与How is 13 % 64= -13相关)
if(extension_loaded('GMP')) {
printf("
PHP Version: %s
gmp_strval(gmp_mod('-13', '64')) = %s
gmp_strval(gmp_mod(-13, 64)) = %s
gmp_mod(-13, 64) = %s
",
phpversion(),
gmp_strval(gmp_mod('-13', '64')),
gmp_strval(gmp_mod(-13, 64)),
gmp_mod(-13, 64)
);
}
在我的 Win7、x64 上,这会产生
PHP Version: 5.3.3
gmp_strval(gmp_mod('-13', '64')) = 51
gmp_strval(gmp_mod(-13, 64)) = -51
gmp_mod(-13, 64) = -51
这很奇怪,因为在http://codepad.viper-7.com/gqN5aa它只产生 51 。
gmp_mod
我在 PHP Bugtracker 上找不到错误。但是手册页上也没有任何内容暗示不同的可能结果。而且我不明白为什么它会产生不同的结果。
请运行上面的代码片段并发布输出以及您正在使用的操作系统和 CPU 架构,这样我可以确认它不仅仅是我的机器在运行。
此外,如果您知道这是一个已知问题还是预期行为,请指向错误跟踪器中的链接。否则我会用收集到的结果打开一个错误。
谢谢!
PS请让我知道我是否应该为此请求CW。否则,我会将指向 bugtracker 的链接作为答案(除非有人提出令人信服的解释)。