From: [EMAIL PROTECTED]
Operating system: linux rh6.2
PHP version: 4.0.4pl1
PHP Bug Type: *General Issues
Bug description: weird intval() and settype('integer') behaviour: loosing bits?
hello,
take a look at this script:
----->8-------->8-------->8-------->8-------->8---
// these are min and max signed 32bits integers
$x = -2147483648; // 0x80000000
$y = 2147483647; // 0x7FFFFFFF
echo 'x = '.$x.'<br>';
echo 'y = '.$y.'<br>';
if($x > $y)
echo 'x > y';
else
echo 'x <= y';
echo '<br>';
$x = intval($x);
echo 'x = intval(x)<br>';
$y = intval($y);
echo 'y = intval(y)<br>';
echo 'x = '.$x.'<br>';
echo 'y = '.$y.'<br>';
if($x > $y)
echo 'x > y';
else
echo 'x <= y';
echo '<br>';
----->8-------->8-------->8-------->8-------->8---
it displays this in php3* and 4*:
x = -2147483648
y = 2147483647
x <= y
x = intval(x)
y = intval(y)
x = -2147483648
y = 2147483647
x > y
the same thing will happen if intval(var) is replaced by
settype(var, 'integer')
thanks
-- vedad
--
Edit Bug report at: http://bugs.php.net/?id=10288&edit=1
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]