A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

734890702

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 734890702 初级黑马   /  2015-9-28 22:22  /  2787 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

30黑马币
代码问题,求各路大神详细解释???
  1.                                int a = 3;
  2.                                 int x = 0;
  3.                                 x = a++;
  4.                                 x = a++;
  5.                                 x = a++;
  6.                                 System.out.println("x = "+x);
  7.                                
  8.                                 x = x++;
  9.                                 x = x++;
  10.                                 x = x++;
  11.                                 System.out.println("x = "+x);
复制代码
我怎么觉得是结果是:5    8,计算机运行是5    5      。。。。。。。。。。。。。求解!!!!!!!


最佳答案

查看完整内容

int a = 3; int x = 0; x = a++;//a=4, x=3 x = a++;//a=5, x=4 x = a++;//x=5,a = 6 System.out.println("x = "+x); x = x++;//x=5 x = x++; x = x++; System.out.println("x = "+x); 有几个点,你可能没理解透彻:x = a++;(里面有两个运算符++和=,但是++的优先级要高于=) (1)是将(a++)表达式的值赋值给变量x,而不是将a的值赋值给变量x,所以我们要先 ...

评分

参与人数 1黑马币 +10 收起 理由
毛强 + 10 很给力!

查看全部评分

13 个回复

倒序浏览
                                int a = 3;
                                int x = 0;
                                x = a++;//a=4,  x=3
                                x = a++;//a=5, x=4
                                x = a++;//x=5,a = 6
                                System.out.println("x = "+x);
                               
                                x = x++;//x=5
                                x = x++;
                                x = x++;
                                System.out.println("x = "+x);
有几个点,你可能没理解透彻:x = a++;(里面有两个运算符++和=,但是++的优先级要高于=)
(1)是将(a++)表达式的值赋值给变量x,而不是将a的值赋值给变量x,所以我们要先计算a++表达式的值,由于++符号在a的后面,所以先使用a的值作为表达式的值,所以a++表达式的值是3
(2)进行++运算,a=a+1,a变成4,但是不管a的值变为了多少,都不会影响第(1)步中的表达式a++的值(3)
(3)进行赋值运算,将a++表达式的值(第一步已经算出来了3)赋值给x,x变为3。
希望我这个解释,对你有用!!!!

点评

int x=o; x=x++; System.out.println("x="+x) 这个问题应该和上面的问题差不多,答案是不是x=0  发表于 2015-9-29 23:24
回复 使用道具 举报
++在前先自增再参加其他运算,++在后先其他运算后自增

评分

参与人数 1黑马币 +10 收起 理由
毛强 + 10 很给力!

查看全部评分

回复 使用道具 举报
JYcainiao 来自手机 中级黑马 2015-9-28 23:23:01
板凳
miao1991 发表于 2015-9-28 22:22
int a = 3;
                                int x = 0;
                                x = a  ;//a=4,  x=3

x = x++;//x=5  
x = x++;//x=?
  x = x++;//x=?
求解答?
回复 使用道具 举报
JYcainiao 来自手机 中级黑马 2015-9-28 23:24:12
报纸
懂了,是我迷惑了,
回复 使用道具 举报
x=x++;没有进行++运算么?
回复 使用道具 举报
因为x这个时候已经变成了5,然后在加加就是8了,依然看不懂啊~
回复 使用道具 举报
因为x=x++;这中间有个temp变量先存储5,然后x自增变为6,最后将temp的5赋值给x。这是因为++的优先度高于=号,x的变化过程是5->6->5.
回复 使用道具 举报
JYcainiao 发表于 2015-9-28 23:23
x = x++;//x=5  
x = x++;//x=?
  x = x++;//x=?

x = x++;   //x=5  
x = x++;     //x=5
  x = x++;    //x=5
x的值先自增为x=6,让后(x++)这个表达式的值为5,之后赋值等号左边的x,把x=6,给覆盖了
回复 使用道具 举报
miao1991 发表于 2015-10-2 19:43
x = x++;   //x=5  
x = x++;     //x=5
  x = x++;    //x=5

懂了  意思是
X=X++   X++先运算,结果X为6,但是X++值赋给X,结果为5,把上一步的赋值给覆盖了 对吧?
回复 使用道具 举报
JYcainiao 发表于 2015-10-3 19:43
懂了  意思是
X=X++   X++先运算,结果X为6,但是X++值赋给X,结果为5,把上一步的赋值给覆盖了 对吧? ...

是的,right
回复 使用道具 举报

谢啦   我弄迷糊了   把X=X++分开来看了,忘记还有个赋值符号了
回复 使用道具 举报
x=a++表示的是将a赋值给x,然后再自加,所以int a=3,int x=0,x=a++,是先把a赋值给x,因此x=3,a再自加为4.依次类推,第一次打印的是5,x=x++,将x=5赋值给左边后x在自加x=6,依次类推x=8。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马