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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 迷失的小Z 中级黑马   /  2014-12-26 00:46  /  1552 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int i = 3;
i = i++;
最后i的值还是3……
是右边先执行的i++然后再把没自增前的值赋值给i,如果i++后执行那么为什么i的值不是4?
不同的语言不同的编译器在这个式子上给出的结论的是不同的,有的语言把这个式子等同于:
int i = 3;
i = i;
i++;
所以得出的结论是4……
那么为什么java语言中的值是3呢……
ps:知道结论的小伙伴们给解释一下就行了,跟我一样不太明白的不必太纠结于这个,毕竟这种写法完全是抽风给自己找事做…………

15 个回复

倒序浏览
Java中后++符表达式的结果是个值而不是一个变量。
也就是说后++符先将自己的值存储起来,然后对变量进行++;
再进行赋值操作,也就是将先存储起来的值赋给变量i,这样的操作就导致了i值被置为3了
对于C和C++来说不一样,在讲到m=i++操作时,C语言是先将i的值赋给了m,然后将i值++,这样i=i++的结果自然就是1了,C的实现中是不存在那个中间的值的存储的。
由于java和c不同的语言特性,导致了i=i++的不同之处
回复 使用道具 举报 2 0
我就是来看看的
回复 使用道具 举报
别的不懂java和C#一样的,都是结果3,这是有他们本身设定的运算符优先级决定的。这个是先运算在++的,所以值是3
回复 使用道具 举报
++i是先加 。 i++是后加。 给分吧- -
回复 使用道具 举报
好好看看以前的笔记,东西太多,基本上学着后面的忘了前面的,一定坚持住。
回复 使用道具 举报
复习下吧
回复 使用道具 举报
呃,看来得复习复习了
回复 使用道具 举报
先加后加的问题,也不用太去纠结了。
回复 使用道具 举报
少年,i++是先取值赋给i,再自加
回复 使用道具 举报
abathe 中级黑马 2014-12-27 11:24:01
11#
温故而知新
回复 使用道具 举报
int i = 3;
i =++i ;
回复 使用道具 举报
zhaojiajun 发表于 2014-12-26 02:14
Java中后++符表达式的结果是个值而不是一个变量。
也就是说后++符先将自己的值存储起来,然后对变量进行++; ...

懂了懂了……又自己查了点资料,底层内存中的东东真的很麻烦……
回复 使用道具 举报
小僧玄奘 发表于 2014-12-26 22:12
++i是先加 。 i++是后加。 给分吧- -

你没看懂题……
回复 使用道具 举报
陈强fly 发表于 2014-12-27 01:29
好好看看以前的笔记,东西太多,基本上学着后面的忘了前面的,一定坚持住。 ...

你没看懂题……
回复 使用道具 举报
楼上们回答的已经很清楚了,我就不多嘴了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马