如果i=0,i=i++,那么i=?

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:48:42
如题,i=i++,那么i=多少?在JAVA中,跑过一遍,得出i=0。但是不知道为什么,求高人解答为什么是等于0。我知道i++是运算之后再加,i=i++,给i赋的值为0,但i++在这条语句赋值之后应该给i自增1吧,为什么会等于0呢?
看了一下解答。基本上是说i=i++的时候,给i赋值的时候是0,执行++的时候没有给i赋值,可是i++本身不就是对i的加一赋值么?i++不是等于i=i+1吗?

要知道i++ 是先赋值在运算. ++i是先计算在赋值.
那我们这样来看i=0;i=i++;
顺序应该是
1. i初始值是0
2. i=i 赋值运算. 左边i是0了吧.
3. 等号右边i在进行加1.
4.所以左边的i还是0;
在换个思路.
i=0;
j=i++;
然后你把
i和j分别显示就知道啦...

我之前也遇到过这个问题:注意两点,1.++的顺序。2.赋值的定义。

你已经知道第1点,就是++的顺序,就是第2点概念不清楚。复制过程必须是:有等号的,也就是说把等号右边的赋值给左边的。例如,a=b;把b赋值给a。那么,本题i=i++;可以分解为:i=i,然后i++,可以看出在后一步,没有“=”,也就是没有赋值语句,没有把i++赋值给i,所以i还是第一步的赋值,还是那个i。

int i = 0;
int j = i;
j = i;
i = i + 1; //i++是自增
i = j;

i=i++是先赋值后加的

i++是先赋值后加运算,++i则是先运算后赋值。
如果楼主刚开始学习java的话,不必为这些问题担心,真正的高手都明白一个道理:越简单,越有效。不会在这些容易让人晕头的问题上纠缠的。希望你能成为高手!

2楼正确