为什么int n=0;n=n++;打印n等于0

wwl19860216 2008-12-04 10:36:01
int n=0;
for(int i=0;i<50;i++)
{
n=n++;
}
System.out.println("n="+n);

最后打印为0;
请各位大哥告诉这是为什么啊????
...全文
731 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
chandlersong 2008-12-05
  • 打赏
  • 举报
回复
n=n++;
其实可以分成以下3句
n1=n;
n=n1;
n1=n1+1;
kf156 2008-12-05
  • 打赏
  • 举报
回复
你这样就理解了
int n=0;
System.out.println(n++);//输出为0,明白了吗?
System.out.println(n);//此时才输出为1
nftdxnftdx 2008-12-05
  • 打赏
  • 举报
回复
int n = 0;
n++;
System.out.println(n);
你这样执行后的结果就为1

int n = 0;
n = n++;
System.out.println(n);
这样执行的结果肯定是0,因为n++执行后n为1而返回值为0,再把0赋给n,n又变成0,所以最后还是0
通过这两个例子的对比不知楼主能不能知道原因
bigbro001 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wwl19860216 的回复:]
引用 7 楼 FriendQ 的回复:
n=n++
n++是先赋值后运算
n还是0
这样一直循环


n++运算后,n的值会变啊,不因该是0啊
[/Quote]

n的值是变了,但是返回值仍然是0
wangming402407250 2008-12-05
  • 打赏
  • 举报
回复
n=n++;中还是相当于把n赋值给了n,所以它一直没有改变还是0
youqingshaoyao 2008-12-05
  • 打赏
  • 举报
回复
tongyi
代码摆渡人 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tianice 的回复:]
n++执行后n为1而返回值为0,再把0赋给n,n又变成0,所以最后还是0
[/Quote]

支持.
zzkk_1980 2008-12-05
  • 打赏
  • 举报
回复
n++是先赋值,再加。++n是先自加,再赋值
zidane1983 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tianice 的回复:]
n++是先赋值,再加。++n是先自加,再赋值
[/Quote]

'
gongfuliang 2008-12-05
  • 打赏
  • 举报
回复
		for(int i=0;i <50;i++) 
{
n += 1;
}


如果非得++,就这么来吧
gongfuliang 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 pepsighost 的回复:]
Java code
public class aaaa {
public static void main(String[] args) {
int n=0;

for(int i=0;i <3;i++)
{
int a=n++;

System.out.println(n);
System.out.println(a);
n=a;
}
System.out.println("n="+n);


}

}
[/Quote]

12楼说明很好
pepsighost 2008-12-05
  • 打赏
  • 举报
回复

public class aaaa {
public static void main(String[] args) {
int n=0;

for(int i=0;i <3;i++)
{
int a=n++;

System.out.println(n);
System.out.println(a);
n=a;
}
System.out.println("n="+n);


}

}


结果为:

1
0
1
0
1
0
n=0

其实是n++后。n的值是为1了。然后又用0赋给n了。那n的值就永远为0了。
wwl19860216 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ZangXT 的回复:]
http://blog.csdn.net/ZangXT/archive/2008/11/05/3229281.aspx
[/Quote]

谢谢你提供的资料,这里面讲的很清楚了,建议有的回贴人看一下
bxrlucky 2008-12-05
  • 打赏
  • 举报
回复
int m=n++ 与 int m=++n;

1.int m=n++,它先将n的值赋给m,然后自身再加1.
2.int m=++m,它是n先加一,然后再将加后n的值赋给m的
3,不管执行那个操作,n的值都加一了
yjheeq 2008-12-05
  • 打赏
  • 举报
回复
当++的右边没有东西时,就直接把值赋给=号左边的变量了
ouyangxiaokang6 2008-12-05
  • 打赏
  • 举报
回复
n++是先赋值,再自加。++n是先自加,再赋值
wwl19860216 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 FriendQ 的回复:]
n=n++
n++是先赋值后运算
n还是0
这样一直循环
[/Quote]

n++运算后,n的值会变啊,不因该是0啊
FriendQ 2008-12-04
  • 打赏
  • 举报
回复
n=n++
n++是先赋值后运算
n还是0
这样一直循环
wwl19860216 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bruni 的回复:]
因为第一次循环的时候:
n => 0;
n = n++ => 0; // n是primative, 这条语句显示将n 赋值 0, 然后n++(已经是一个新的值但没有改变原来的那个n) 原来的n还是0.
后面也是一样.

你直接n++就出来结果了.
[/Quote]


为什么没有改变原来的那个n啊,这不符合逻辑,因原n++,就可以得到正确打印啊
加载更多回复(5)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧