8

我有这个不适用于负数的 PHP 函数:

function isOdd($num) 
{
   return $num % 2 == 1; 
}

但它适用于正数。

我有这个 Perl 例程,它做同样的事情,也适用于负数

sub isOdd()
{
  my ($num) = @_;
  return $num % 2 == 1;
}

我在翻译函数时犯了任何错误吗?还是 PHP 错误?

4

1 回答 1

20

在 PHP 中,结果x % y的符号是被除数的符号,x
在 Perl 中,除数的符号是y​​ 。

所以在 PHP 中,结果$num % 2可以是1,-10.

所以修复你的函数将结果与0

function isOdd($num) { 
  return $num % 2 != 0; 
}
于 2011-03-02T04:24:26.077 回答