On Wed, 27 Nov 2002, Andi Gutmans wrote:

> At 04:41 PM 11/26/2002 -0500, Daniel Cowgill wrote:
> >So why do the conversion in arithmetic? This seems bizarrely inconsistent to
> >me:
> >
> ><?
> >print (int)  "0xA" + 0;   // prints 0
> >print (int) ("0xA" + 0);  // prints 10
> >?>
> >
> >I think it's reasonable to expect those expressions to return the same value.
> >
> 
> Hmm, this is definitely interesting. The result of the second expression 
> should be 0 too. I haven't had time to check why this happens as all 
> conversions in zend_operators.c are with base 10. I vaguely remember 
> someone changing something in this area a while ago.
> BTW in PHP 4.0.4 this prints out "1" (the second expression) which doesn't 
> make much sense.
> The reason for this is that is_numeric_string() which is used in 
> add_function() does convert hexadecimals whereas all other code in 
> zend_operators.c doesn't.
> This is a pretty bad inconsistency which should be addressed.

And I like to see it addresses so that above examples both print 10.

Derick

-- 

-------------------------------------------------------------------------
 Derick Rethans                                 http://derickrethans.nl/ 
 JDI Media Solutions                             http://www.jdimedia.nl/
 PHP Magazine - PHP Magazine for Professionals       http://php-mag.net/
-------------------------------------------------------------------------


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to