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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 米家小九 中级黑马   /  2015-2-23 23:12  /  910 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

不多说废话int x = 2;
                int x1 = x++;
                int x2 = (x1)++;
                System.out.println("x1="+x1+"   "+"x2="+x2);
                x = x++;
                System.out.println(x);
                x = x++;
                System.out.println(x);
        打印结果是:  x1=3   x2=2
                          3
                          3
不明白,x1不应该是先赋值,在自增吗?就是x1等于3,X2怎么会等于2呢?不该是4了吗?
x自增不该是加1,是3,第二次自增不该是4了吗?
让大家见笑了,可是真的是不明白,希望各位给小弟讲下,不胜感激

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 加油

查看全部评分

5 个回复

倒序浏览
其实这个题非常简单,我昨天就发了一个专门讲这个的帖子http://bbs.itheima.com/thread-171193-1-1.html
如果还不明白,你就把输出语句换个位子,在int x1 = x++;后面马上输出x1,你看等于几?然后在int x2 = (x1)++;后面单独输出x1和x2,你就明白了,你的输出语句有很大迷惑性,这才导致你不理解

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
没人理我,我看了半天,又回头仔细看看优先级,自己又明白了,好尴尬的说
                int x = 2;
                int x1 = x++;
                int x2 = (x1)++;
                System.out.println("x1="+x1+"   "+"x2="+x2);
                x = x++;
                System.out.println(x);
                x = x++;
                System.out.println(x);
定义x=2, x1=x++;则先把x=2的值付给了x1,然后x++;此时x=3,x1=2;然后x2=x1++,同理,x1的值2赋给x2,然后x1自增为3,所以x1结果为3,x2结果为2
下面的x=x++得到的值全是x第一次自增后的值3,然后下面的两个是先赋值,后自增,所以x结果都为3,突然感觉好惭愧啊,

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
huangchunwei 来自手机 中级黑马 2015-2-24 10:04:24
板凳
优先级的问题:lol:lol
回复 使用道具 举报
本帖最后由 fanshuai 于 2015-2-24 10:14 编辑
米家小九 发表于 2015-2-24 00:17
没人理我,我看了半天,又回头仔细看看优先级,自己又明白了,好尴尬的说
                int x = 2;
     ...

嗯。。。。。。。。。
回复 使用道具 举报
进来学习了  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马