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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毕业生 中级黑马   /  2014-7-14 21:04  /  1214 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int  v4 = 0;
v4= v4++;
System.ouu.println("v4="+v4);
输出v4=0,求讲解原因!

8 个回复

倒序浏览
这个程序我只能这么解释,这个 i=i++ 中的两个i并不是一个i。你换个语言在验证下,结果不是上面打印的结果。我认为想要了解清楚这个过程,得在java中找到++运算符是怎么实现这个功能的,推断在内存中=左右两边的变量没在一个内存中,可能有形参之间的值传递。
回复 使用道具 举报
先将V4=0赋值给左边,然后再进行自增,所以打印的结果是0
回复 使用道具 举报
有个小知识点   关于“前++”、“=”、”后++“,这三种运算的优先级排序是   
“前++”   >  “=”  >  “后++”   
  临时变量先得到v4原来地值是0,这时候考虑优先级,=大于后++,所以临时变量就执行赋值操作,之后临时变量先读出v4地值,再进行++操作,但是++操作只是在临时变量自己身上加一,不会影响原来地v4值。
回复 使用道具 举报
v4= v4++;
先取值再自增,这个先取值其实是先把值暂存在一个临时变量中,整个过程可以理解为:
temp = v4; v4 = v4 +1; v4 = temp;
因为v4初始值是0,所以temp的值是0,最终v4的取值也是0。
回复 使用道具 举报
以前学了些C++  用C 结果不是这个。现在转战Java 就变了,看到了,知道结果,但不知道原理!心里感觉不爽。
回复 使用道具 举报
DSY 发表于 2014-7-14 22:07
有个小知识点   关于“前++”、“=”、”后++“,这三种运算的优先级排序是   
“前++”   >  “=”  >  “ ...

这种理解感觉应该正确!
回复 使用道具 举报
黎志勇 发表于 2014-7-14 22:09
v4= v4++;
先取值再自增,这个先取值其实是先把值暂存在一个临时变量中,整个过程可以理解为:
temp = v4;  ...

这样容易理解
回复 使用道具 举报

嗯嗯 这样理解就容易很多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马