1. X++題目如下:static void Main(string[] args){ int x = 5; int y = 10; y += x++; Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString());}答案是多少呢?x=6,y=15現(xiàn)在修改一下代碼,如下:static void Main(string[] args){ int x = 5; int y = 10; x++; y += x; Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString());}答案變成了x=6,y=16為什么呢?其實(shí)記住基本原理就可以無敵了:X++ will return its old value and then increment the value.下面這道題想必大家都知道答案了。static void Main(string[] args){ int x = 5; int y = 10; x = x++; Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString());}根據(jù)上面原則,x++增加x的值,但返回原來的值,所以x=5.那么下面應(yīng)該返回多少呢?static void Main(string[] args){ int x = 5; int y = 10; x = x++; x = x++; Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString()); Console.Read();}有人有點(diǎn)暈了吧?是不是應(yīng)該等于6呢?實(shí)際答案是x=5.再看看上面原理,自己理解下。static void Main(string[] args){ int x = 5; int y = 10; x++; Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString());}這個(gè)x等于多少呢?因?yàn)閤++會(huì)加1,所以x=6.再加多一行x++呢?如下:static void Main(string[] args){ int x = 5; int y = 10; x++; x++; Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString());}x就乖乖遞增了,現(xiàn)在等于7.2. ++X現(xiàn)在變換一下,試試++x吧。static void Main(string[] args){ int x = 5; ++x; Console.WriteLine("x=" + x.ToString());}現(xiàn)在x=6.那么加上等號(hào)呢?static void Main(string[] args){ int x = 5; x = ++x; Console.WriteLine("x=" + x.ToString());}這次不是5了哦。x還是等于6.為什么呢?++X first increment the value, then return this value. 所以++X會(huì)返回新值。現(xiàn)在考考大家,下面的x等于多少呢?static void Main(string[] args){ int x = 5; x += x++; Console.WriteLine("x=" + x.ToString());}正確答案是10.3. x += x + x++ VS x += x++ + xhttp://blogs.msdn.com/b/lucabol/archive/2004/08/31/223580.aspx再看看下面的代碼,static void Main(string[] args){ int x = 5; x += x + x++; Console.WriteLine("x=" + x.ToString());}答案是15還是16呢?相信有不少同學(xué)認(rèn)為是16,實(shí)際上正確答案是15.別看x+= x+x++很復(fù)雜,有點(diǎn)繞,其實(shí)它等于x += x + x. 這下同學(xué)們明白了。那下面的答案應(yīng)該是多少呢?static void Main(string[] args){ int x = 5; x += x++ + x; Console.WriteLine("x=" + x.ToString());}大家說那還不是一樣么?x+=x+x啊,還是15.這次又錯(cuò)啦。答案是16哦。傻眼了吧?到底是怎么回事呢?繞來繞去繞暈了啊。我們來仔細(xì)解析一下吧:x = x + x++;1. x=(x) + x++ -->根據(jù)從左到右的運(yùn)算法則。第一個(gè)x即用括號(hào)括起來的x先進(jìn)行運(yùn)算,x本來為5,所以x=5 + x++2. x= 5 + (x)++ -->這里括起來的x為5, 所以x=5+ (5)++3. x= 5 + (5)++ -->經(jīng)過x++運(yùn)算,x變?yōu)?,但是x++返回舊值,還是5,所以x= 5+54. x= 5+5 --> 返回105. x += x+ x++ --> 即 x+= 10, 即 x= x+10=15所以這里x=15.x=x++ + x;1. x=(x)++ + x --> x= (5)++ + x2. x = (5++) + x --> x = 6 + x --> 返回11所以最后x+= x++ + x -> 即 x+= 11, 即 x= x+11=16為16.4. x = x + ++x VS x = ++x + x見下面代碼:static void Main(string[] args){ int x = 5; x = x + ++x; Console.WriteLine("x=" + x.ToString()); Console.Read();}結(jié)果為11static void Main(string[] args){ int x = 5; x = ++x + x; Console.WriteLine("x=" + x.ToString()); Console.Read();}結(jié)果為12