java中for(int i= 0; i<=10;i=i++)System.out.print(i);为什么无限输出0?

 我来答
pensiero
推荐于2017-10-14 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6921
采纳率:83%
帮助的人:1266万
展开全部
好吧,你中奖了。估计没读过那本java解惑的人都解答不了你的问题。
i = i++;
在java中
++是自增去处符,不过呢这里有个这样的机制,在做自增之前,先把i的地址保存起来,假设用变量a保存了这个地址,用变量b保存了自增后的地址。
现在把i变量的拿出来+1,再放回到地址b去。本来单独使用是没有问题,i++,很正常,但如果写成
i=i++问题就来了。
=符号把地址重新指向了。
每次执行后i指向i原来的地址,即a,但是a所在的地址,值并没有变。
这就是你为什么无限输出0的原因。
追答
有问题可以追问
不好意思,写错了些字
更正:

++是自增运算符(五笔那两个词是同码)

现在把i变量的拿出来+1,再放存放到地址b去,然后让i指向地址b。
samismiling
2015-07-07 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
改为for(int i= 0; i<=10;i++)
for(int i= 0; i<=10;i=i++)这句的最后一个i=i++,i就永远是0了,因为i++是下一刻才是变成1,而在下一刻之前还是0,被你赋值给了i,所以i永远是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
施弘阔0dp
2015-07-07 · TA获得超过289个赞
知道小有建树答主
回答量:519
采纳率:0%
帮助的人:318万
展开全部
i=i++,这个使i一直等于0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
query999
2015-07-07 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:139
采纳率:100%
帮助的人:106万
展开全部
i=i++这样每次i都是0
改成i++
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式