黑马程序员技术交流社区

标题: i = i++; 计算机底层怎么运算的? [打印本页]

作者: aohn1117    时间: 2015-11-26 23:27
标题: i = i++; 计算机底层怎么运算的?
老师给的提问
作者: yuanjun52306    时间: 2015-11-26 23:34
先建立一个临时空间,把i自增1,再把临时空间的i赋值给i,所以结果还是原来的i不变
作者: yuanjun52306    时间: 2015-11-26 23:35
class I
{
        public static void main(String[] args){
                int i = 1;
                i = i++;
                System.out.println(i);
        }
}

输出:1
作者: yuanjun52306    时间: 2015-11-26 23:40
顺便说下i = ++i; 吧。

先将i自增1,然后把i(自增后的i)赋值给i

class I
{
        public static void main(String[] args){
                int i = 1;
                i = ++i;
                System.out.println(i);
        }
}

输出:2
作者: yuanjun52306    时间: 2015-11-26 23:43
其实不用在意等号左边的是谁,关键是++i 和 i++后的结果。因为等号左边是i,所以i相当于被改了两次
作者: Camwly    时间: 2015-11-27 09:19
楼上6啊
作者: MRguo    时间: 2015-11-27 14:12
按顺序算的话应该是:
右边的i赋值给左边的i,然后右边的i自增一次。结果:i=i。
如果是i=++i的话,结果应该是i=i+1。

作者: anuo    时间: 2015-11-27 14:51
底层是不懂,但是这个问题的方向是要区分i++和++i的吧
作者: 黑夜中那颗星    时间: 2015-11-27 14:54
int i = 1;
i = i++;
1.先把i的值去到一个临时空间里面,里面存的是值是1
2.然后i再做自增操作,这个时候i是2了
3.最后把临时空间里面的值赋值给左边的i,还是变回1了
作者: 橘子果酱    时间: 2015-11-27 15:35
anuo 发表于 2015-11-27 14:51
底层是不懂,但是这个问题的方向是要区分i++和++i的吧

是的,还有i--   和 --i  都是一样的  主要区分他们的运算顺序
作者: wqd123    时间: 2015-11-27 21:55
结果是一样的
作者: chh    时间: 2015-11-30 22:03

int i = 1;
i = i++;
先开辟临时空间i自增为2,再将i原来的值返回给左边的i。




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