At 04:41 PM 11/26/2002 -0500, Daniel Cowgill wrote:
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.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.
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.
Andi
On Tue, 26 Nov 2002, Andi Gutmans wrote:
> http://marc.theaimsgroup.com/?l=php-dev&m=90279104406264&w=2
>
> There's more...
>
> Andi
>
> At 10:21 PM 11/26/2002 +0100, Derick Rethans wrote:
> >On Tue, 26 Nov 2002, Andi Gutmans wrote:
> >
> > > I remember having a long conversation on this issue quite a long time ago.
> > > I think it was on php-dev. The bottom line was that we only want
> > conversion
> > > in the scanner and not within PHP.
> >
> >Too bad, because the following thing is totally uninituitive:
> >
> >echo (int)"0x200";
> >
> >(prints "0")
> >
> >And I searched for a discussion on this, but couldnt' find it. I wonder
> >why it was decided to be like this.
> >
> >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