This is not a precedence issue, but an evaluation order issue. It is also not a difference between C and Perl, but a "by design" language specification issue that the evaluation order is not specified by either language. It is the same issue that means that the evaluation order of parameters passed to a sub is not specified.

The language specifications are not specific about the evaluation order in such cases to allow compiler/interpreter writers freedom to evaluate such things in a way that best suits their code generators or optimizers.

It is very likely that different C compilers will generate code that produces different results than you have seen. It is even possible that the same compiler will generate different answers when different compiler options are used.

The bottom line is, don't use expressions or parameter lists where execution results are order dependent such as the examples given, or by calling subs that have side effects.


Perl is environmentally friendly - it saves trees

In reply to Re: Autoincrement operator precedence difference between C and Perl by GrandFather
in thread Autoincrement operator precedence difference between C and Perl by Mbk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.