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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2015-4-2 22:24  /  856 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码
回复 使用道具 举报 0 1
你把x++放输出语句下边
回复 使用道具 举报
的确是这样的,以前没注意呢
回复 使用道具 举报
!!!!!!!!!!!!!!!!
回复 使用道具 举报
看吧,晚上老师讲了你没听明白吧,for(;;)本来就是一个死循环,再考虑x,先输出,再赋值,所以打印的就是0
回复 使用道具 举报

首先x初始化是0;然后执行x=x++;
x++中x虽然加 1 了,但是用的是加1 之前的x,所以执行结果是x=0;所以输出是0;for(;;)是死循环,所以输出一直是0;
如果你想输出 1 ,需要把 x=x++;换成 x++;这样输出结果就是 1 了。
回复 使用道具 举报
for(;;)里没有条件表达式,初始化值是ture。所以一直循环
回复 使用道具 举报
for(;;)里没有条件表达式,初始化值是ture。虽然x自增了,但是条件满足(ture),所以一直循环
回复 使用道具 举报
老问题了...++a和a++的区别...
回复 使用道具 举报
只用x++,才是自增,就是X变量会每次加1
x=x++是先赋值再运算,x=x++后x依然为0
回复 使用道具 举报
你有循环吗??没有就不会自增。。。
回复 使用道具 举报
Searching 来自手机 中级黑马 2015-4-4 22:10:59
12#
x=x++;(赋值语句先执行右边的代码)
右边x++是后自增,也就是下次用到x的时候才加1,所以右边的值等于0。
左边的x呢,因为先执行了右边,所以此时x应该等于1了,但是右边的值又赋给了左边,所以输出结果x永远等于0。个人了解,探讨一下,错了勿喷:lol
回复 使用道具 举报
这是个关于x ++ 和 ++ x的区别,x = x++是先把原先x的值赋值给x后再自增。
回复 使用道具 举报
x=x++;这句话,x先用再++,x就一直是0,肯定输出一直是0啊
回复 使用道具 举报
多想一下就明白了
回复 使用道具 举报
个人理解:循环一次,内存中的x值变了两次,当运行到x=x++;时,x++是等于0,所以是x=0,但0这时并没有赋给x,而是先x自增了一次,内存中x变为1,然后执行x=0,这时x又变为0,所以x一直是0。(不知道对不对,请大神指导)。
回复 使用道具 举报
你x++过后并没有赋值给x,为什么不是0?先运算x就等会x了然后在x++;x的值是为1了但是你并为赋值啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马