comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Re: Unary operator after binary operator: legal or not? => Compiler Error
Date: Wed, 01 Aug 2007 00:16:41 -0700
Date: 2007-08-01T00:16:41-07:00	[thread overview]
Message-ID: <1185952601.476211.72590@r34g2000hsd.googlegroups.com> (raw)
In-Reply-To: <1185909474.208950.99070@d30g2000prg.googlegroups.com>

On 31 Lip, 21:17, Adam Beneschan <a...@irvine.com> wrote:

> What I can't figure out is, my C compiler accepts "c = a+++b"

Yes.

> but it
> doesn't
> seem to accept "c = a+++++b"

Right.

> which should clearly be equivalent to
> c = (a++) + (++b).

Why do you think so? On what basis?

The C (and C++) parser is greedy, which means that it tries to eat as
much as it can to get the valid token. The first two pluses in 'a++++
+b' give a single token '++'. The next two pluses give another *valid*
token, which is again '++'. And so on. The only problem is that two
such tokens one after another, while still being *valid* tokens, do
not form a valid expression (cannot post-increment the r-value that
results from the first post-increment).

Note that you can/should write:

c = a++ + ++b;

which does what you expect (except that post-increment has no benefits
over pre-increment here).

Hint: keep the formatting of your code readable. Your compiler just
refuses the code that would be hard to read by a human being - why do
you consider it to be a bug in the language? :-)

--
Maciej Sobczak
http://www.msobczak.com/




  reply	other threads:[~2007-08-01  7:16 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-30 22:52 Unary operator after binary operator: legal or not? Jeffrey R. Carter
2007-07-30 23:39 ` Markus E.L.
2007-07-31  0:22 ` Adam Beneschan
2007-07-31 21:52   ` Jeffrey R. Carter
2007-07-31  8:01 ` anon
2007-07-31  8:16   ` Unary operator after binary operator: legal or not? => Compiler Error anon
2007-07-31  8:38     ` AW: Unary operator after binary operator: legal or not? => CompilerError Grein, Christoph (Fa. ESG)
2007-07-31 15:05     ` Unary operator after binary operator: legal or not? => Compiler Error Robert A Duff
2007-07-31 15:39       ` Dmitry A. Kazakov
2007-07-31 15:53         ` Robert A Duff
2007-07-31 17:02           ` Georg Bauhaus
2007-07-31 19:17             ` Adam Beneschan
2007-08-01  7:16               ` Maciej Sobczak [this message]
2007-08-01 15:23                 ` Adam Beneschan
2007-07-31 20:59             ` Robert A Duff
2007-08-01  7:24               ` Georg Bauhaus
2007-08-01  8:02                 ` Dmitry A. Kazakov
2007-08-01  8:17                   ` AW: Unary operator after binary operator: legal or not? => CompilerError Grein, Christoph (Fa. ESG)
2007-08-01 10:10                     ` Ian Clifton
2007-08-01  9:34                   ` Unary operator after binary operator: legal or not? => Compiler Error Georg Bauhaus
2007-08-01 21:51                 ` Jeffrey R. Carter
2007-07-31 17:52           ` Dmitry A. Kazakov
2007-08-02 20:44           ` Charles Lindsey
2007-08-03  7:48             ` Stuart
2007-08-03  7:51             ` Dmitry A. Kazakov
2007-07-31 23:22     ` anon
2007-08-01  0:13       ` Adam Beneschan
2007-08-01  6:20         ` Unary operator after binary operator: legal or not? => Illegal anon
2007-08-01  5:34       ` AW: Unary operator after binary operator: legal or not? => CompilerError Grein, Christoph (Fa. ESG)
2007-08-01  6:46         ` To := Grein, Christoph (Fa. ESG) anon
2007-08-01  7:11           ` AW: " Grein, Christoph (Fa. ESG)
2007-08-02  6:52             ` anon
2007-08-02  8:56               ` AW: " Grein, Christoph (Fa. ESG)
2007-08-02 22:29                 ` Markus E.L. 2
2007-08-02 23:02                   ` tmoran
2007-08-02 23:11                     ` Ed Falis
2007-08-02 23:34                     ` Markus E.L. 2
2007-08-03  4:42                   ` AW: " Grein, Christoph (Fa. ESG)
2007-08-02 22:28               ` Markus E.L. 2
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox