use*_*527 8 php perl operators modulus
我有这个PHP函数,它不适用于负数:
function isOdd($num)
{
return $num % 2 == 1;
}
Run Code Online (Sandbox Code Playgroud)
但它适用于正数.
我有这个Perl例程,它执行完全相同的操作,也适用于负数
sub isOdd()
{
my ($num) = @_;
return $num % 2 == 1;
}
Run Code Online (Sandbox Code Playgroud)
我在翻译这个功能时犯了什么错误吗?还是PHP的bug?
cod*_*ict 20
在PHP中的结果的符号x % y是的符号分红是x,但
在Perl它是的符号除数是y.
所以在PHP中,结果$num % 2可以是1,-1或者0.
所以修复你的函数比较结果0:
function isOdd($num) {
return $num % 2 != 0;
}
Run Code Online (Sandbox Code Playgroud)