Re: Operator precedence is undefined?

From: Date: Sat, 20 Jul 2013 07:58:29 +0000
Subject: Re: Operator precedence is undefined?
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-68262@lists.php.net to get a copy of this message
Hi Stas, 2013/7/20 Stas Malyshev <smalyshev@sugarcrm.com> > Hi! > > >> If there aren't comments, I'll rewrite the example. > >> > >> > >> There were comments. I explicitly told you that that the behavior is > > defined as undefined. You CHOSE to ignore that comment. You CHOSE to > > break the documentation. > > Besides that, asking for comments and committing the same day is not > really conductive to a good discussion. Even if nobody objected - which > explicitly wasn't the case - there's nothing that prevented waiting for > a couple of days just to be sure. Please, let us not to be too hasty. > Fair discussion. I'll revert the commit for now. Keeping room for better compilers is good, too. Anyway, the restriction is needed to be documented. How about this explanation? <?php $a = 3 * 3 % 5; // (3 * 3) % 5 = 4 // ternary operator associativity differs from C/C++ $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2 $a = 1; $b = 2; $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5 // mixing ++/-- and arithmetic operators may produce // unexpected results, since the evaluation order depends // on compiler implementation. $a = 1; echo ++$a + $a++; // not supported ?> If expression like "echo ++$a + $a++" is not supported for future compilers, PHP is better to raise E_NOTICE if it is easy and fast. Regards, -- Yasuo Ohgaki yohgaki@ohgaki.net

« previous php.internals (#68262) next »