黑马程序员技术交流社区

标题: a++ ++a哪位大神能详细解释下啊。。谢谢。 [打印本页]

作者: yekong262    时间: 2013-12-29 18:33
标题: a++ ++a哪位大神能详细解释下啊。。谢谢。
  1. int a=3;
  2. a=a++;
  3. a=++a;//其结果和表达式谁能详细解释下
复制代码

作者: yekong262    时间: 2013-12-29 18:36
再附加下。。这种的表达式 我知道。但是上面那个不清楚了  他们区别在哪 呢 ?b=a++和 a=a++
  1. int a=3,b;
  2. b=a++;//这个是 把a赋值给b然后再自增赋值给a
  3. b=++a;//
复制代码
这个是自增a然后赋值给b
作者: yekong262    时间: 2013-12-29 18:51
没人么?
作者: 高正新    时间: 2013-12-29 19:30
本帖最后由 高正新 于 2013-12-29 20:15 编辑

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

作者: yekong262    时间: 2013-12-29 20:04
高正新 发表于 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.。


作者: 松子    时间: 2013-12-29 20:06
  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
作者: yekong262    时间: 2013-12-29 20:17
松子 发表于 2013-12-29 20:06
int a = 3;
  a = a++;  //右边a的值是3,先赋值给左边的变量a,也就是变量本身,所以它值还是3
  System ...

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


a=a++  是先把a的值存到寄存器里,然后变量a自增1,最后由寄存器里的值(也就是a原来的值)赋给a。
作者: 杨丽静    时间: 2013-12-30 22:55
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解析跟前面的一样。
作者: 范晓冲    时间: 2013-12-30 23:25
a++表示先用a的值,再对a加1,在你的代码中的a=a++=3;    ++a表示先对a加1,然后再使用它的值,你的代码中a=++a=4;
作者: 杨丽静    时间: 2013-12-31 11:44
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,解析跟前面一样。
作者: 杨丽静    时间: 2013-12-31 11:48
int a = 3;b = a++;c = ++a;首先将a=3的值赋值给b,然后a再自增1,所以a=4,b=3;后一个a先自增1然后把值赋给所以a=4c=3.你写的代码a最后的值为5解析跟前面一样。
作者: rainforestking    时间: 2013-12-31 13:07
想要真正理解这种问题,请自行百度“表达式的值和变量的值”
作者: Class_焱    时间: 2014-1-1 18:03
                ++/--:
                        ++ 其实相当于把数据+1

                        单独使用:
                                在数据的前后,结果一致。
               
                        参与操作使用:
                                如果在数据的后边,数据先操作,在++/--
                                如果在数据的前边,数据先++/--,在操作。




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