Некорректная работа функции xor (^)

young

Новичок
Некорректная работа функции xor (^)

Код:

echo "Deb source \n";
var_dump($a);
var_dump($tmp);
$a ^= $tmp;
echo "Deb result \n";
var_dump($a);

Корректная работа:

Deb source
float(-5883499359)
int(177392)
Deb result
int(-1588438959)


Не корректная работа (один из серверов)

Deb source
float(-5883499359)
int(177392)
Deb result
int(-2147306256)

Как видим, входящие данные одинаковы, результат не верен

ОС: FreeBSD 6.latest
PHP: 5.latest

ZendOptimizer: проверялось и с включенным и выключенным

У кого какие идеи?

-~{}~ 01.02.06 15:00:

код, воспроизводящий ошибку:

<?php
$a = (float)-5883499359;
$b = (int)177392;
$a ^= $b;
echo $a;
?>
 

Nogrogomed

Новичок
Есть только одна мысля: представление чисел с плавающей точкой на этих серверах - различные... и их xor'ы - тоже...

Вообще слабо представляю ксор флоата и целого...
 

serglt

Анус, ой, Ахтунг
Nogrogomed
Полностью согласен
логические операторы на скока я помню работают толоко с целыми числами
 
Сверху