Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: question 1st - undefined behaviour

by ikegami (Pope)
on Sep 24, 2013 at 19:03 UTC ( #1055526=note: print w/replies, xml ) Need Help??

in reply to question 1st - undefined behaviour

If you want to see what's happening, you can step through the following:
use strict; use warnings; use Data::Alias qw( alias ); my @stack; # Increments the scalar on the stack. sub preinc { alias my $i = pop(@stack); ++$i; alias push @stack, $i; } # Increments the scalar on the stack. # Returns a new scalar with the original # value of the scalar on the stack. sub postinc { alias my $i = pop(@stack); my $j = $i; alias push @stack, $j; ++$i; } sub add { alias my $j = pop(@stack); alias my $i = pop(@stack); my $sum = $i + $j; alias push @stack, $sum; } { my $x=5; # $x + ++$x + $x++ alias push @stack, $x; alias push @stack, $x; preinc; add; alias push @stack, $x; postinc; add; print "$stack[-1]\n"; # 18 }

(alias $x = $y; represents the copying of a C pointer rather than copying the actual scalar.)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1055526]
[LanX]: CORPORATE conferences still suck - Machine learning’s big event
[erix]: (annoying habit of the economist to publish anonymously)

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (9)
As of 2017-12-14 17:17 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (400 votes). Check out past polls.