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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 549208564 中级黑马   /  2016-1-6 17:28  /  973 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                int x=1;
                System.out.println(x++);//1
               int y=x;//y是2
为什么打印出来的是1,而不是2
最好能说一下原理,x不是++了吗,可打印出来的还是1,而y赋值却是2 了

10 个回复

倒序浏览
(x++)先做运算再赋值,你完全可以先忽略++运算

点评

就算是打印语句也是先得到x之后打印了,才++是吧  发表于 2016-1-6 17:34
回复 使用道具 举报
如果是输出++x,那么就是输出2.++在前就先++,在后面就先运算或者赋值,本题中先输出,然后++变成2.
回复 使用道具 举报
有两种情况:每一种是先赋值再运算如++x,;  还有一种就是先运算再赋值如x++,而你这里就是先运算再赋值,此时x=1,先打印这个1后,再自增变成2,然后下面y=x=2
回复 使用道具 举报
因为x++是先按1的值运行一次,之后再加1
回复 使用道具 举报
++前边先加一再运算,后边先运算再+一。按你的代码,现输出1,然后加1,那么x赋给y时变2了.
回复 使用道具 举报
本帖最后由 jasonbourne 于 2016-1-8 13:13 编辑

这样记会很好记:int x = 3,y = 3;  int a = ++x; int b = y++;
当++在变量的前面的时候,x先自增,然后再参与运算(即先自增,再把值赋给a),所以a=4;
当++在变量的后面的时候,y先参与运算,然后再自增(即现把值赋给b,然后再自增),所以 b = 3;
回复 使用道具 举报
++i和i++嘛、、一个先运算后付制,一个先赋值后运算
回复 使用道具 举报
先执行打印了,x才自加,所以打印结果是1,y赋值结果是2,关键看++在数的左边还是右边
回复 使用道具 举报
是先将X的值参与语句输出,然后再将X的值加加,所以输出的语句是1,y为2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马