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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. int a=3;
  2. a=a++;
  3. a=++a;//其结果和表达式谁能详细解释下
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 +1鼓励分!

查看全部评分

14 个回复

倒序浏览
再附加下。。这种的表达式 我知道。但是上面那个不清楚了  他们区别在哪 呢 ?b=a++和 a=a++
  1. int a=3,b;
  2. b=a++;//这个是 把a赋值给b然后再自增赋值给a
  3. b=++a;//
复制代码
这个是自增a然后赋值给b

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 +1鼓励分!

查看全部评分

回复 使用道具 举报
没人么?
回复 使用道具 举报
本帖最后由 高正新 于 2013-12-29 20:15 编辑

++a先自增,然后参与运算。
a++ 先参与运算,然后再自增。
二者如果都是单独出现的话,是没有区别的。
(不好意思,之前的弄错了,现在修正了)

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 淡定

查看全部评分

回复 使用道具 举报
高正新 发表于 2013-12-29 19:30
a++ 先自增,然后参与运算。
++a 先参与运算,然后再自增。
二者如果都是单独出现的话,是没有区别的。

int a=3,b;
b=a++;//这个是把a赋值给b也就是b=3然后a再加1是吧。
但是 我要问的是
a=a++//  这个是怎么个运算过程?  把a赋值给a  然后再自加?     我不懂为什么a还是3.。

回复 使用道具 举报
  int a = 3;
  a = a++;  //右边a的值是3,先赋值给左边的变量a,也就是变量本身,所以它值还是3
  System.out.println(a); //3
  a = ++a; //a的值是3,先自增变成4,再赋值给左边,最终a是4
  System.out.println(a); //4

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 神马都是浮云

查看全部评分

回复 使用道具 举报 1 0
松子 发表于 2013-12-29 20:06
int a = 3;
  a = a++;  //右边a的值是3,先赋值给左边的变量a,也就是变量本身,所以它值还是3
  System ...

恩 明白了。。谢谢~!
回复 使用道具 举报
a=a++  是先把a的值存到寄存器里,然后变量啊自增1,最后由寄存器里的值(也就是a原来的值)赋给a。
回复 使用道具 举报
或与非 发表于 2013-12-29 21:52
a=a++  是先把a的值存到寄存器里,然后变量啊自增1,最后由寄存器里的值(也就是a原来的值)赋给a。 ...


a=a++  是先把a的值存到寄存器里,然后变量a自增1,最后由寄存器里的值(也就是a原来的值)赋给a。
回复 使用道具 举报
int a=3; b=a++; c=++a;a++是先把a = 3的值赋值给b,a再加1,所以a = 4,b = 3;++a是a先子增1再赋值给b,所以a = 4,b = 4。但是如果解析你的代码的话a最后的值等于5解析跟前面的一样。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
a++表示先用a的值,再对a加1,在你的代码中的a=a++=3;    ++a表示先对a加1,然后再使用它的值,你的代码中a=++a=4;
回复 使用道具 举报
int  a = 3;b = a++;c = ++a;首先将a = 3的值赋值给b,然后a再自增1,所以a = 4 b = 3;后一个a先自增1,然后把自增后的值赋给c所以a = 4 c = 4.按你写的代码a最后的值为5,解析跟前面一样。
回复 使用道具 举报
int a = 3;b = a++;c = ++a;首先将a=3的值赋值给b,然后a再自增1,所以a=4,b=3;后一个a先自增1然后把值赋给所以a=4c=3.你写的代码a最后的值为5解析跟前面一样。
回复 使用道具 举报
想要真正理解这种问题,请自行百度“表达式的值和变量的值”
回复 使用道具 举报
                ++/--:
                        ++ 其实相当于把数据+1

                        单独使用:
                                在数据的前后,结果一致。
               
                        参与操作使用:
                                如果在数据的后边,数据先操作,在++/--
                                如果在数据的前边,数据先++/--,在操作。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马