首页 > 学院 > 开发设计 > 正文

老问题:关于X++和++X及其X=X++

2019-11-11 01:50:52
字体:
来源:转载
供稿:网友
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现在修改一下代码,如下: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为什么呢?其实记住基本原理就可以无敌了: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());}根据上面原则,x++增加x的值,但返回原来的值,所以x=5.那么下面应该返回多少呢?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();}有人有点晕了吧?是不是应该等于6呢?实际答案是x=5.再看看上面原理,自己理解下。static void Main(string[] args){   int x = 5;   int y = 10;             x++;   Console.WriteLine("x=" + x.ToString() + " y=" + y.ToString());}这个x等于多少呢?因为x++会加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就乖乖递增了,现在等于7.2. ++X现在变换一下,试试++x吧。static void Main(string[] args){   int x = 5;               ++x;   Console.WriteLine("x=" + x.ToString());}现在x=6.那么加上等号呢?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会返回新值。现在考考大家,下面的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呢?相信有不少同学认为是16,实际上正确答案是15.别看x+= x+x++很复杂,有点绕,其实它等于x += x + x. 这下同学们明白了。那下面的答案应该是多少呢?static void Main(string[] args){   int x = 5;               x += x++ + x;   Console.WriteLine("x=" + x.ToString());}大家说那还不是一样么?x+=x+x啊,还是15.这次又错啦。答案是16哦。傻眼了吧?到底是怎么回事呢?绕来绕去绕晕了啊。我们来仔细解析一下吧:x = x + x++;1. x=(x) + x++ -->根据从左到右的运算法则。第一个x即用括号括起来的x先进行运算,x本来为5,所以x=5 + x++2. x= 5 + (x)++ -->这里括起来的x为5, 所以x=5+ (5)++3. x= 5 + (5)++ -->经过x++运算,x变为6,但是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();}结果为11static void Main(string[] args){   int x = 5;               x = ++x + x;   Console.WriteLine("x=" + x.ToString());   Console.Read();}结果为12
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表