Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^4: Conditional Operator Confusion

by Melly (Hermit)
on Nov 30, 2006 at 17:03 UTC ( #587012=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Conditional Operator Confusion
in thread Conditional Operator Confusion

Not really... I'm sure I'm being really dumb here, but I still don't understand, in the following example, why $x gets set to "FALSE"... just very, very confused...

1==1?$x='TRUE':$y='FALSE'; print "x=$x\n";
Tom Melly, pm@tomandlu.co.uk


Comment on Re^4: Conditional Operator Confusion
Download Code
Re^5: Conditional Operator Confusion
by ikegami (Pope) on Nov 30, 2006 at 17:12 UTC

    The conditional operator has higher precedence than the assignment operator, so
    $c?$x='TRUE':$y='FALSE'
    is the same as
    ($c?$x='TRUE':$y)='FALSE'

    The addition operator has higher precedence than the conditional operator, so
    $c?$x+2:$y+3
    is the same as
    $c?$x+2:($y+3)

    If you want to do assignments, use if or add parens. Think of as the conditional operator as an operator that returns something.

      Thanks - I think I've finally got it (with some help from the chatterbox as well).

      All of which goes to confirm something a coworker once told me..

      Me: What's the precedence in <lang> for these operators?
      CW: Who cares? Use brackets - it's easier to read and
          you won't get screwed...
      
      Tom Melly, pm@tomandlu.co.uk

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://587012]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2014-07-26 13:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (177 votes), past polls