黑马程序员技术交流社区

标题: 简单循环for遇到的问题 [打印本页]

作者: 陈佳    时间: 2015-4-2 22:58
  1. package Xun;

  2. public class XunHuan {
  3.         public static void main(String[] args) {
  4.                 int x = 0;
  5.                 for (;;) {
  6.                         x = x++;//++是自增运算,x初始化为0,0自增以后还是0,所以x的值一直都是0,所以打印结果一直是0
  7.                         System.out.println(x);
  8.                 }

  9.         }
  10. }
复制代码

作者: m-勇敢的心    时间: 2015-4-2 23:01
你把x++放输出语句下边
作者: 快乐ABC    时间: 2015-4-2 23:36
的确是这样的,以前没注意呢
作者: 黑马:二师兄    时间: 2015-4-3 21:44
!!!!!!!!!!!!!!!!
作者: lf027    时间: 2015-4-3 23:16
看吧,晚上老师讲了你没听明白吧,for(;;)本来就是一个死循环,再考虑x,先输出,再赋值,所以打印的就是0
作者: 小七28    时间: 2015-4-4 18:38

首先x初始化是0;然后执行x=x++;
x++中x虽然加 1 了,但是用的是加1 之前的x,所以执行结果是x=0;所以输出是0;for(;;)是死循环,所以输出一直是0;
如果你想输出 1 ,需要把 x=x++;换成 x++;这样输出结果就是 1 了。

作者: 时过境迁    时间: 2015-4-4 19:52
for(;;)里没有条件表达式,初始化值是ture。所以一直循环
作者: 时过境迁    时间: 2015-4-4 19:53
for(;;)里没有条件表达式,初始化值是ture。虽然x自增了,但是条件满足(ture),所以一直循环
作者: One_M    时间: 2015-4-4 20:35
老问题了...++a和a++的区别...
作者: Sylvanas    时间: 2015-4-4 20:46
只用x++,才是自增,就是X变量会每次加1
x=x++是先赋值再运算,x=x++后x依然为0
作者: 罗晓飞    时间: 2015-4-4 21:49
你有循环吗??没有就不会自增。。。
作者: Searching    时间: 2015-4-4 22:10
x=x++;(赋值语句先执行右边的代码)
右边x++是后自增,也就是下次用到x的时候才加1,所以右边的值等于0。
左边的x呢,因为先执行了右边,所以此时x应该等于1了,但是右边的值又赋给了左边,所以输出结果x永远等于0。个人了解,探讨一下,错了勿喷:lol
作者: Richard926    时间: 2015-4-4 22:20
这是个关于x ++ 和 ++ x的区别,x = x++是先把原先x的值赋值给x后再自增。
作者: wenhb    时间: 2015-4-4 22:59
x=x++;这句话,x先用再++,x就一直是0,肯定输出一直是0啊
作者: Catface    时间: 2015-4-4 23:13
多想一下就明白了
作者: Kewin.java    时间: 2015-4-5 23:15
个人理解:循环一次,内存中的x值变了两次,当运行到x=x++;时,x++是等于0,所以是x=0,但0这时并没有赋给x,而是先x自增了一次,内存中x变为1,然后执行x=0,这时x又变为0,所以x一直是0。(不知道对不对,请大神指导)。
作者: Dark县令    时间: 2015-4-6 00:42
你x++过后并没有赋值给x,为什么不是0?先运算x就等会x了然后在x++;x的值是为1了但是你并为赋值啊。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2