Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!nx01.iad01.newshosting.com!newshosting.com!216.196.98.142.MISMATCH!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Wed, 19 Oct 2011 12:58:55 -0500 Date: Wed, 19 Oct 2011 18:58:59 +0100 From: Patricia Shanahan User-Agent: Thunderbird 1.5.0.2 (Windows/20060308) MIME-Version: 1.0 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> In-Reply-To: Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 8bit Message-ID: Lines: 71 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 83.244.254.136 X-Trace: sv3-2YF57zS6lmKaRiXu1lCDUSzozRYKkFJY72cKauV4oS/rzN1aXtT3gcz11LlOu7jTK6tbi8tTtdxBeDB!U0E+toh6F9vh2GsgaUpRI1f1AelZVihlhdYqjU5BTNUOz9RH1QoFgnZ0q+U7DuxHDGxJ7u3gfRTg!cfossTdr7oiIA5QUN14wVcSlfHdb2eafcFTf3H1paLbYQoM= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 4325 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:9006 whl wrote: > On Oct 19, 4:20 pm, Patricia Shanahan wrote: >> whl wrote: >>> On 10月19日, 上午11时48分, Patricia Shanahan 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