Re: Operator precedence is undefined?
| From: | Yasuo Ohgaki | 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