A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廖理 中级黑马   /  2012-5-3 13:28  /  3049 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 廖理 于 2012-5-3 13:33 编辑

i =++i;与i=i++;的区别
int i = 0;
i = i++;
System.out.println(i);
上面的程序会输出什么?

大部分会说是 1,是也,非也。运行时正确结果为0。
i=++i;相当于以下二个语句(编译时出现警告,与i=i;警告相同):
i=i+1;
i=i;
i = i++;相当于以下三个语句:
int tmp = i;
i = i + 1;
i = tmp;
下面看看下面程序片段:
int i = 0, j = 0, y = 0;
i++;//相当于:i=i+1;
System.out.println("i=" + i);// i=1
++i;//相当于:i=i+1;
System.out.println("i=" + i);// i=2
i = i++;//相当于:int tmp=i;i=i+1;i=tmp;
System.out.println("i=" + i);// i=2
i = ++i;//编译时出现警告,与i=i;警告相同。相当于:i=i+1;i=i;
System.out.println("i=" + i);// i=3
j = i++;//相当于:int tmp=i;i=i+1;j=tmp;
System.out.println("j=" + j);// j=3
System.out.println("i=" + i);// i=4
y = ++i;//相当于:i=i+1;y=i;
System.out.println("y=" + y);// y=5
System.out.println("i=" + i);// i=5

9 个回复

倒序浏览
哥们!我相当的无语了!这个在九期都不知道出现几次了
1就是一个先加和后加的问题i=+1先加1再赋值i=1++先赋值再加1
回复 使用道具 举报
嗯 不错
回复 使用道具 举报
按照毕向东老师的说法 i =i++ 就是先出去玩 在回来吃饭 i =++i 就是先吃饭在出去玩{:soso_e101:}猪真肥{:soso_e120:}
回复 使用道具 举报
i++就是先取值后增加1,++i就是先增加1后取值
回复 使用道具 举报
i = 10 只要程序中出现 i++ 那代码中运算先 取i本身的值,也就是10,进行运算,运算完后再 i= i + 1,那么这时候i = i + 1  等于11了
而 ++i   便是程序语句中出现++i  则是 先运算i = i + 1 ,那么i= 11,然后再 把这个i带入程序进行运算
列子:  int i = 10 ,a;
第一种情况: a = i++; 那么a=10;
第二种情况: a = ++i; 那么a=11;
这些是基础问题,需要多看看书

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
i++是先运算后赋值,++i是先赋值后运算嘛~~
回复 使用道具 举报
假设你是单身,结婚前你无子女,你与一个妹子结婚了,假设你这辈子注定必须有一个孩子,再假设你结婚以后的老婆不出轨.
那么 ++1的意思是,你老婆再结婚以前有个孩子,然后你结婚了然后你有了1个孩子. 1++的意思是你老婆结婚前是没孩子的,结婚以后你们有了1个孩子了.
++再前++1是结婚前有了孩子,所以你结婚的那天就获得一个老婆一个孩子.              得到了2(个人)
++在后1++是结婚以后你们才有了孩子,所以你结婚的那天你只得到了一个老婆      得到了1(个人)
但是不管你是结婚以后有了孩子还是结婚之前有了孩子,你自己都会得到一个老婆和一个孩子..
回复 使用道具 举报
这种问题不能说是经典,我感觉是很蛋疼的问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马