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


Groups > comp.lang.java.programmer > #9006

Re: A freshman's question

Date 2011-10-19 18:58 +0100
From Patricia Shanahan <pats@acm.org>
Newsgroups comp.lang.java.programmer
Subject Re: A freshman's question
References <3242b80f-ee51-45f0-9e12-231482f61a97@r2g2000prh.googlegroups.com> <37KdnWZAYfIR1QPTnZ2dnUVZ_vWdnZ2d@earthlink.com> <02a66b06-651a-46c8-9a09-64442a73a959@s17g2000prm.googlegroups.com> <F4mdnVWUC_HXFQPTnZ2dnUVZ_oednZ2d@earthlink.com> <a3ebc324-8271-45e9-ab06-2e9ef74ad3d7@r2g2000prh.googlegroups.com>
Message-ID <SPSdnYTTvuNCkgLTnZ2dnUVZ_qydnZ2d@earthlink.com> (permalink)

Show all headers | View raw


whl wrote:
> On Oct 19, 4:20 pm, Patricia Shanahan <p...@acm.org> wrote:
>> whl wrote:
>>> On 10月19日, 上午11时48分, Patricia Shanahan <p...@acm.org> wrote:
>>>> whl wrote:
>>>>> Dear all
>>>>>            I am a freshman ,I from china, I have been learn java for
>>>>> mouths,my English isn't very well ,may my question expression is not
>>>>> very clear,but I hope I can learn with you together! thank you !
>>>>> . when I do some test ,I found the question ,It is the code
>>>>> ======start=========
>>>>>        public class Inc{
>>>>> public static void main(String argv[]){
>>>>>                 Inc inc = new Inc();
>>>>>                 int i =0;
>>>>>                 inc.fermin(i);
>>>>>                 i = i++;
>>>>>                 System.out.println(i);
>>>>>         }
>>>>>         void fermin(int i){
>>>>>                 i++;
>>>>>         }
>>>>> }
>>>>> ========end========
>>>>> I think the result is 1,but the real result is 0. I don't kown the
>>>>> statement i=i++ operation sequence.  In my opinion , variable i's
>>>>> values is 0,then i++ ,the variable i's values is 1. They share a
>>>>> common memory space,the variable i should change the values.
>>>> The i=i++ operation sequence is:
>>>> 1. Evaluate i++. It has the side effect of incrementing i to 1, but has
>>>> as result the old value of i, 0.
>>>> 2. Do the assignment. This sets the left hand side, i, equal to the
>>>> result of the right hand side, 0.
>>>> In theory, i does change to 1, but immediately changes back to 0. In
>>>> practice, the change in i's value might get optimized out. The effect of
>>>> i=i++ is to leave i unchanged.
>>>> Patricia
>>> so ,thank you for you answer my question ,I just don't know the
>>> variable i is share the common memory space and when the left hand
>>> side ,i ,equal to the result of the right hand side ,0,then ,i
>>> increase to 1,so ,in the memory ,the variable i's value should be 1.if
>>> change the expression i=i++ to i++,the result is 1.
>> Look again at what I wrote.
>>
>> During step 1, at least in theory, i changes from 0 to 1. If the entire
>> statement is "i++;" that is the value of i for later statements. The 0
>> result of evaluating i++ is not used.
>>
>> In the original case, step 2 makes i equal to the value of the right
>> hand side, 0, and that is the value of i for later statements.
>>
>> Patricia
> 
> Thank you for your explain in patience,maybe my English is very
> terrible,I don't understand all of your meaning . your meaning is when
> the variable i is assigned ,the value of i on  the left hand side is
> 0,then don't execute the i++ , execute the next statement and print
> the value?

No, the i++ does get executed, but so does the "=".

The whole i=i++; statement is more or less equivalent to:

// Evaluate i++
temp = i;
i = i + 1;

// Assign the value of i++ to i
i = temp;

Patricia

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-18 20:08 -0700
  Re: A freshman's question Patricia Shanahan <pats@acm.org> - 2011-10-19 04:48 +0100
    Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-19 00:54 -0700
      Re: A freshman's question Patricia Shanahan <pats@acm.org> - 2011-10-19 09:20 +0100
        Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-19 03:38 -0700
          Re: A freshman's question Lars Enderin <lars.enderin@telia.com> - 2011-10-19 17:48 +0200
            Re: A freshman's question Tim Slattery <Slattery_T@bls.gov> - 2011-10-19 12:24 -0400
              Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-20 03:55 -0700
            Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-20 03:50 -0700
          Re: A freshman's question Lew <lewbloch@gmail.com> - 2011-10-19 09:58 -0700
            Re: A freshman's question Patricia Shanahan <pats@acm.org> - 2011-10-19 18:47 +0100
            Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-20 03:48 -0700
        Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-19 03:49 -0700
          Re: A freshman's question Patricia Shanahan <pats@acm.org> - 2011-10-19 18:58 +0100
            Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-20 02:13 -0700
      Re: A freshman's question Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-10-19 06:05 -0300
        Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-19 03:38 -0700
    Re: A freshman's question Travers Naran <tnaran@gmail.com> - 2011-10-20 07:30 -0700
      Re: A freshman's question Gene Wirchenko <genew@ocis.net> - 2011-10-20 10:08 -0700
        Re: A freshman's question Patricia Shanahan <pats@acm.org> - 2011-10-20 18:22 +0100
        Re: A freshman's question Lew <lewbloch@gmail.com> - 2011-10-20 13:59 -0700
        Re: A freshman's question Joshua Cranmer <Pidgeot18@verizon.invalid> - 2011-10-20 17:38 -0500
  Re: A freshman's question Roedy Green <see_website@mindprod.com.invalid> - 2011-10-19 23:56 -0700
    Re: A freshman's question whl <wanghailunmail@gmail.com> - 2011-10-20 03:55 -0700

csiph-web