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の符号ですが 、Perl では である除数の符号です。x
y

したがって、PHP では、 の結果は、またはの$num % 2いずれかになります。1-10

したがって、関数を修正して、結果を次のように比較します0

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