user-documentation
user-documentation copied to clipboard
Nonequivalent code snippets
Where is the problem?
- In the last two code snippets.
What is the problem?
- After
$x = 0;,$y = $x++;is rewritten as$y = $x + 1;,$x++;. These snippets are not equivalent. In the first snippet,$yequals0after which$xgets incremented, whereas in the second snippet$ybecomes1and$xgets incremented.
Please don't change anything below this point.
- Build ID: HHVM=HHVM-4.164.0:HSL=v4.108.1:2024-02-08T13:44:46+0000:1fa47f258c6b68f8ec01899aa82fd6ffa0957109
- Page requested: /hack/expressions-and-operators/incrementing-and-decrementing
- Page requested at: Sun, 04 Aug 2024 19:54:28 +0000
- Controller: GuidePageController
You are correct, $x++ is a post increment. The old value of $x gets used for the assignment. How would you like the statement to be rewritten? Should ++$x be used to restore the described behavior or should a different example be used altogether?
I would suggest just removing + 1 from the second code snippet, as this example would be the easiest to understand. That would look like this:
$x = 0;
$y = $x++; // Parse error
Instead, the above code must be written as statements.
$x = 0;
$y = $x;
$x++;