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


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

Re: A freshman's question

Date 2011-10-19 18:47 +0100
From Patricia Shanahan <pats@acm.org>
Newsgroups comp.lang.java.programmer
Subject Re: A freshman's question
References (1 earlier) <37KdnWZAYfIR1QPTnZ2dnUVZ_vWdnZ2d@earthlink.com> <02a66b06-651a-46c8-9a09-64442a73a959@s17g2000prm.googlegroups.com> <F4mdnVWUC_HXFQPTnZ2dnUVZ_oednZ2d@earthlink.com> <4df1e05a-295c-4c60-9baf-0e69cd4ee507@r2g2000prh.googlegroups.com> <17976081.108.1319043493265.JavaMail.geo-discussion-forums@yqjh13>
Message-ID <ScSdnekftejUkALTnZ2dnUVZ_gydnZ2d@earthlink.com> (permalink)

Show all headers | View raw


Lew wrote:
> whl wrote:
>> Patricia Shanahan wrote:
>>> whl wrote:
>>>> Patricia Shanahan wrote:
>>>>> whl wrote:
>>>>>> ======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.
>>>> 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.
>> Thank you for your explanation in patience, maybe my English is very
>> terrible,I don't understand all of your meaning. your meaning is when
>> the variable i on the right hand side is assigned 0,then ,the
>> statement "i++" don't execute,and start print?
> 
> No.
> 
> The "i++" *does* execute.  ("print" has nothing to do with this yet.)
> 
> What is the value of 'i++'?
> 
> Let's just look at two lines of code.
> 
> int i = 0;
> int x = i++;
> 
> What is the value of 'x' after its initialization?
> 
> Zero!
> 
> Why?
> 
> Because the value of a post-increment expression - that means the '++' is to the right of the variable - is the value of the variable before the increment.
> 
> This is very, very basic.

I'm beginning to think the problem may be even more basic.

Does whl realize that the right hand side of an assignment is completely
evaluated, including all side effects, before the assignment?

That means that the incrementing of i due to the i++ is done and over
before the value of the i++ expression is assigned to i.

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