Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.programming > #1849

Re: Pre And Post Increment Operator Output

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail
From "BartC" <bc@freeuk.com>
Newsgroups comp.programming
Subject Re: Pre And Post Increment Operator Output
Date Fri, 22 Jun 2012 16:02:03 +0100
Organization A noiseless patient Spider
Lines 1
Message-ID <js21jb$963$1@dont-email.me> (permalink)
References <8404c4f1-a3b7-46b7-ad9c-17de265f9aee@googlegroups.com><js02hp$jsl$1@dont-email.me> <js03uf$sb3$1@dont-email.me><js092m$pov$1@dont-email.me> <lnipek8bri.fsf@nuthaus.mib.org><js1gf5$l7v$1@dont-email.me> <0.06d3eacd14619c86d384.20120622143458BST.87ehp7o4fx.fsf@bsb.me.uk>
Mime-Version 1.0
Content-Type text/plain; format=flowed; charset="iso-8859-1"; reply-type=original
Content-Transfer-Encoding 7bit
Injection-Date Fri, 22 Jun 2012 15:05:15 +0000 (UTC)
Injection-Info mx04.eternal-september.org; posting-host="g02lTOQ/PuOntaKLE4vnTw"; logging-data="9411"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19kU4S6I9odepMfuDozcfRf"
X-MimeOLE Produced By Microsoft MimeOLE V14.0.8089.726
In-Reply-To <0.06d3eacd14619c86d384.20120622143458BST.87ehp7o4fx.fsf@bsb.me.uk>
X-Antivirus-Status Clean
X-Newsreader Microsoft Windows Live Mail 14.0.8089.726
Importance Normal
X-Antivirus avast! (VPS 120622-0, 22/06/2012), Outbound message
Cancel-Lock sha1:Y8PUt1CwgJgebhxjmi6PfRvUa7M=
X-Priority 3
X-MSMail-Priority Normal
Xref csiph.com comp.programming:1849

Show key headers only | View raw


[Moved from comp.lang.c]

"Ben Bacarisse" <ben.usenet@bsb.me.uk> wrote in message
news:0.06d3eacd14619c86d384.20120622143458BST.87ehp7o4fx.fsf@bsb.me.uk...
> "BartC" <bc@freeuk.com> writes:

>>>>>> "Yogesh Yadav Pacheria" <yogeshpacheria@gmail.com> wrote in message
>>
>>>>>>>   int i = 0;
>>>>>>>   i = ++i + ++i + ++i;
>>>>>>>   printf("%d",i);
>>>>
>>>>>>> Output should be 6
>>>>>>>
>>>>>>> But In GCC it's 7
>>>>
BC>>>> I agree it ought to be 6.

>> OK, so we fix it so that the result is ....? Any guesses?
>
> Argh!  Another chasm opens up!  There can be no guess.  You fix it by
> choosing what you want it to mean.  You choose it to mean 6, so you "fix
> it" (in all senses of the word) by re-writing it as:
...

> It doesn't just "happen" to coincide -- you forced it to.  You have a
> view of what the code "really" means, but that's just one rather
> arbitrary point of view.  To take another, ++i, when i is zero, sets i
> to 1 and has the value one.  The statement
>
>  i = ++i + ++i + ++i;
>
> could, in this context, be taken to mean
>
>  i = (i = 1) + (i = 1) + (i = 1);
>
> which is still undefined of course but it looks quite different and your
> expectation would probably be different.

This is all true. But I still think that if you ask for opinions as to the
result of i=(++i)+(++i)+(++i), when i starts at 0, *outside the context of
the C language*, then 6 is a strong contender.

I don't immediately have many other languages to hand that have a "++"
operator, but trying this sort of thing with Python, Lua and Ruby:

i=0

def incri():
        global i
        i=i+1
        return i

i=(incri()+incri()+incri())
print (i)

they all give 6 as the result. Trying it on 4 of my (own) compilers, (on one
of which I had to rush through the implementation of ++!) they all give 6
too.

Even in C, when the expression was simplified to 3-address code, the result
was 6. And in the compiler in my head, the answer was also 6!

So although it was understood why C might not give 6 for the original
expression, you must understand that expecting a value of 6, for someone new
to C, was perfectly reasonable. Hence I agreed with the OP.

(Sorry to drag the discussion here, but it was becoming uncomfortable in
comp.lang.c)

-- 
Bartc

 

Back to comp.programming | Previous | NextNext in thread | Find similar


Thread

Re: Pre And Post Increment Operator Output "BartC" <bc@freeuk.com> - 2012-06-22 16:02 +0100
  Re: Pre And Post Increment Operator Output Patricia Shanahan <pats@acm.org> - 2012-06-22 08:30 -0700
    Re: Pre And Post Increment Operator Output "BartC" <bc@freeuk.com> - 2012-06-22 17:49 +0100
      Re: Pre And Post Increment Operator Output Patricia Shanahan <pats@acm.org> - 2012-06-22 10:36 -0700
        Re: Pre And Post Increment Operator Output "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-06-23 09:57 +0100
      Re: Pre And Post Increment Operator Output Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-06-22 20:53 +0100
        Re: Pre And Post Increment Operator Output "BartC" <bc@freeuk.com> - 2012-06-22 21:35 +0100
          Re: Pre And Post Increment Operator Output Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-06-22 23:19 +0100
            Re: Pre And Post Increment Operator Output "BartC" <bc@freeuk.com> - 2012-06-23 01:15 +0100
  Re: Pre And Post Increment Operator Output Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-06-22 17:44 +0100

csiph-web