黑马程序员技术交流社区

标题: i++,小白求解 [打印本页]

作者: Java田鹏    时间: 2016-3-22 23:20
标题: i++,小白求解
题目如下:
int i = 100;
i = i++;
i = i++;
System.out.println(i);
为什么最终i是100,
不知道这样理解对吗?
首先i++表达式结果为100,i自身增加1,i=101,(i++)表达式赋值给i,最终i=100,
也就是说程序的运行顺序是(i++) →i自身自增→赋值运算,因为赋值是最后执行的,所以赋值动作覆盖了自增动作是吗?这样理解对不对,求大牛详解
作者: CangYe    时间: 2016-3-23 00:46
i++是先给=左边的i赋值,再自增,换成++i就行了。
作者: 霸道总裁爱村花    时间: 2016-3-23 01:00
这涉及到内存的分配问题。java的编译器在遇到i++和i- -的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉,i=i++的确是赋值动作覆盖了自增
作者: zhoubinjian    时间: 2016-3-23 02:18
没错 ,是100,首先看你初始值,100,第一个i=i++,i的值为100,第二个i=i++,i还是先赋值再加,所以i还是100,不知道这么说你懂不懂?
作者: 1519218880    时间: 2016-3-23 23:34
首先i++是先把值赋给左边,第一次运算左边的i为100,然后下边的i再先把值赋给左边  还是100
作者: 丶飞得更高    时间: 2016-3-23 23:43
i =i++,   i++,  i先赋值给左边的i,自身然后在自加1,++i是先自加在赋值
作者: 604840337    时间: 2016-3-23 23:49
i =i++ 先赋值给i  所以就是100
作者: 马儿不吃草    时间: 2016-3-23 23:51
先赋值再运算,i=i++;先把100赋值给i,然后再自增




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2