黑马程序员技术交流社区

标题: 比较简单的问题 [打印本页]

作者: 549208564    时间: 2016-1-6 17:28
标题: 比较简单的问题
                int x=1;
                System.out.println(x++);//1
               int y=x;//y是2
为什么打印出来的是1,而不是2
最好能说一下原理,x不是++了吗,可打印出来的还是1,而y赋值却是2 了
作者: ConsciousStream    时间: 2016-1-6 17:31
(x++)先做运算再赋值,你完全可以先忽略++运算
作者: 黑色皮肤的马    时间: 2016-1-6 22:11
如果是输出++x,那么就是输出2.++在前就先++,在后面就先运算或者赋值,本题中先输出,然后++变成2.
作者: 1066715808    时间: 2016-1-6 22:35
有两种情况:每一种是先赋值再运算如++x,;  还有一种就是先运算再赋值如x++,而你这里就是先运算再赋值,此时x=1,先打印这个1后,再自增变成2,然后下面y=x=2
作者: 1055513951    时间: 2016-1-6 23:05
因为x++是先按1的值运行一次,之后再加1
作者: jkf19980216    时间: 2016-1-8 10:45
++前边先加一再运算,后边先运算再+一。按你的代码,现输出1,然后加1,那么x赋给y时变2了.
作者: jasonbourne    时间: 2016-1-8 13:10
本帖最后由 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;
作者: foolishlovepig    时间: 2016-1-8 15:11
++i和i++嘛、、一个先运算后付制,一个先赋值后运算
作者: fagug    时间: 2016-1-8 15:14
先执行打印了,x才自加,所以打印结果是1,y赋值结果是2,关键看++在数的左边还是右边
作者: cj286    时间: 2016-1-8 18:10
是先将X的值参与语句输出,然后再将X的值加加,所以输出的语句是1,y为2




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