黑马程序员技术交流社区
标题:
比较简单的问题
[打印本页]
作者:
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