Can someone help me understand why Perl does this with a Pre-Increment:
which outputs:my $i = 0; my ($j, $k) = (++$i, ++$i); #Pre-increment print "\$j: $j\t\$k: $k\n";
When what I actually expected was:$j: 2 $k: 2
$j: 1 $k: 2
Whereas Perl outputs the following with the following code
Which, as expected, outputs:my $i = 0; my ($j, $k) = ($i++, $i++); #Pre-increment print "\$j: $j\t\$k: $k\n";
$j: 0 $k: 1
According to the Camel:
The ++ and -- operators work as in C. That is, when placed before a variable, they increment or decrement the variable before returning the value, and when placed after, they increment or decrement the variable after returning the value.To my surprise, a similar test program in a C++ IDE netted the exact same result. Wow...OK, fair enough.
I can accept this is and it just means I'll have to expand my code a few extra lines to accommodate. I would like to know the why of it though. Why does both ++$i variables get evaluated before being fed into print whereas $i++ is evaluated in sequence? What's the logic behind that?
In reply to Pre vs Post Incrementing variables by SavannahLion
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |