黑马程序员技术交流社区

标题: i=i++的原理? [打印本页]

作者: dwy_hm    时间: 2014-12-17 11:09
标题: i=i++的原理?
int i=0
i=i++

结果是i=0
那么i自增的东西去哪了呢?

作者: 孟子飞宏    时间: 2014-12-17 11:15
i++是先赋值给i再进行自增。
作者: 孟子飞宏    时间: 2014-12-17 11:16
也就是说,i先把0付给了左边的i,然后i自己又加了1变成1. 你还不如把左边的i定义为c这样看着顺眼。
作者: 孟子飞宏    时间: 2014-12-17 11:18
int i=0; c = i++; i把0赋给c此时c=0,然后i自增变为1此时i=1.
作者: 孟子飞宏    时间: 2014-12-17 11:21
看看这个吧
class jj
{
        public static void main(String[] args)
        {
                int i=0;
                int c = i++;
                System.out.println(c);
                System.out.println(i);
        }
}

捕获.PNG (13.36 KB, 下载次数: 12)

捕获.PNG

作者: dwy_hm    时间: 2014-12-17 11:25
孟子飞宏 发表于 2014-12-17 11:21
看看这个吧
class jj
{

我是说i++去哪了
作者: dwy_hm    时间: 2014-12-17 11:27
自增的值i=i+1 去哪了?
作者: 孟子飞宏    时间: 2014-12-17 11:27
dwy_hm 发表于 2014-12-17 11:25
我是说i++去哪了

i++也就是i=i+1;i自己吧值赋给c 他自己作完自增就在内存里存着吧。
作者: 来自未来    时间: 2014-12-17 11:33
++在后面 i就会先把0赋值给i 之后才进行++动作。所以打出来的就是0了
作者: 米和饭    时间: 2014-12-17 12:28
i++是先赋值在给自己叠加的

你问i++去哪了?它还是在那啊!只不过它等你赋值完再出来而已,你要想知道i++去哪,可以用

for(int i=0;i<5;i++)
{
//第一次i是0,然后i++后就是1,但它是在第二轮循环中才出来的,因为先赋值再叠加
System.out.println(i);
}
作者: qowoeo7538    时间: 2014-12-17 12:50
int i=0;
i=(i++)+(++i);       
System.out.println(i);

你发现了什么了吗?




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