黑马程序员技术交流社区
标题:
关于自增的问题
[打印本页]
作者:
爱上这格调
时间:
2013-9-19 09:29
标题:
关于自增的问题
本帖最后由 杨增坤 于 2013-9-19 11:51 编辑
class Demo01
{
public static void main(String[] args)
{
int i;
i = 0;
i = i++;
System.out.println(i);
}
}输出结果为什么会是0;i初值为0,先把0赋给i然后自增了1输出结果不就是应该是1吗
作者:
(0.0)’
时间:
2013-9-19 09:44
呵呵,这个开始我也没想明白,其实你可以这样看:
1、在自增前,i 的值放在了一个临时内存中。
2、这时 i 的值自增为 1,等式左边的就运算完了。
3、这时就开始赋值运算,而赋值给左边的 i 时,是用临时内存中的值来赋值。
作者:
刘亮
时间:
2013-9-19 09:48
注意a++;和++a的用法。 前者是后自加,后者是前自加。比如你的这个题,先把a的值赋给a,然后a的值+1,存储到内存空间,于是a输出的值就是0,而存储在内存的值是11. 如果这个题是++a的话,输出的值就是1.了。
作者:
路边小色狼
时间:
2013-9-19 09:49
i=i++ 与i=++i 的区别
i=i++是先把0赋给i,然后i+1并没有赋值给i
你先别全用i,你用不同变量来试
public class D6 {
public static void main(String[] args) {
int a=0; int b=1;
a=b++;
System.out.println(a+""+b);
}
}
复制代码
作者:
吴光新
时间:
2013-9-19 09:52
i++
先用后加
,你先打印完了,才自增。
++i
先加后用
,先自增了,才打印
作者:
369833818
时间:
2013-9-19 09:58
++i是运算前先自增
i++是运算后自增
作者:
1098918523
时间:
2013-9-19 10:13
i++ :表示先不加,运行之后,在加;
++I :表示先加,然后在进行运算;
example:y=i++ :y=i;
y=++I :y=i+1;
作者:
doevents
时间:
2013-9-19 10:31
i = i++;你这句是先赋值给i,然后打印完i后才自增的,如果直接写成 i++ 或者写成 ++i 就是1了。
作者:
sil
时间:
2013-9-19 11:08
对于 i++ 或者++i 这些容易出事儿的玩意儿,我宁愿不用啊。。。。。。 为了让程序不那么成为“折磨人的存在”,还是写清楚比较好,比如 i=i+1;之类。
作者:
狼人→浪人
时间:
2013-9-19 11:41
class Demo01
{
public static void main(String[] args)
{
i=i++; //此时右边i=0先赋值给左边,右边i++更新内存(但是下面调用的是内存更新前的i!!有点绕,我是这样理解)
/*
i++; //更新内存
System.out.println(i); //只会输出内存里面i=1
*/
System.out.println(i); //输出的是i++前的i(内存更新前的i),但是到此时内存里面的实际值是1
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2