java中for(int i= 0; i<=10;i=i++)System.out.print(i);为什么无限输出0?
4个回答
展开全部
好吧,你中奖了。估计没读过那本java解惑的人都解答不了你的问题。
i = i++;
在java中
++是自增去处符,不过呢这里有个这样的机制,在做自增之前,先把i的地址保存起来,假设用变量a保存了这个地址,用变量b保存了自增后的地址。
现在把i变量的拿出来+1,再放回到地址b去。本来单独使用是没有问题,i++,很正常,但如果写成
i=i++问题就来了。
=符号把地址重新指向了。
每次执行后i指向i原来的地址,即a,但是a所在的地址,值并没有变。
这就是你为什么无限输出0的原因。
i = i++;
在java中
++是自增去处符,不过呢这里有个这样的机制,在做自增之前,先把i的地址保存起来,假设用变量a保存了这个地址,用变量b保存了自增后的地址。
现在把i变量的拿出来+1,再放回到地址b去。本来单独使用是没有问题,i++,很正常,但如果写成
i=i++问题就来了。
=符号把地址重新指向了。
每次执行后i指向i原来的地址,即a,但是a所在的地址,值并没有变。
这就是你为什么无限输出0的原因。
追答
有问题可以追问
不好意思,写错了些字
更正:
++是自增运算符(五笔那两个词是同码)
现在把i变量的拿出来+1,再放存放到地址b去,然后让i指向地址b。
展开全部
改为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
for(int i= 0; i<=10;i=i++)这句的最后一个i=i++,i就永远是0了,因为i++是下一刻才是变成1,而在下一刻之前还是0,被你赋值给了i,所以i永远是0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i=i++,这个使i一直等于0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i=i++这样每次i都是0
改成i++
改成i++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询