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]

Reply via email to