黑马程序员技术交流社区

标题: 请教一下a++ 和++a的问题 [打印本页]

作者: 愿望    时间: 2014-7-10 14:53
标题: 请教一下a++ 和++a的问题
本帖最后由 愿望 于 2014-7-10 21:38 编辑

这个地方一直不明白......0.0
int b;
int a = 10;
b = (a++) + (++a); //b=10+12 这个是为什么 , 为什么不是b=11+11

b=(++a) + (a++); //为什么 b=11 +11  了呢, ? 球详解啊!  



作者: fantacyleo    时间: 2014-7-10 15:05
哪种算法都是对的。看这里:http://bbs.itheima.com/thread-128465-1-1.html
作者: 54lier    时间: 2014-7-10 15:07
a++,这个是后加加,是先把a的值赋值给a++这个表达式后,a再自动加1
++a,这个是前加加,是先把a的值加1后,再把a的值赋值给++a这个表达式
b= (a++) + (++a)
这个表达式从左往右开始计算,先看 a++,首先把a的值赋值给a++这个表达式,这时候a++=10,然后a=a+1=11,
然后再看++a,先把a自加1,a=a+1=11+1=12,然后再把a的值赋值给++a这个表达式,即++a=12
b=10+12=22

作者: qq605370560    时间: 2014-7-10 15:09
b=(a++)+(++a)     (a++)的时候   是a赋值后在+1  所以(a++)=10,  在a++赋值后a变成了11;(++a)是a加上1后在计算为12,所以是10+12;
作者: qq605370560    时间: 2014-7-10 15:10
b=(++a)+(a++)  中  (++a)是先加1在赋值所以为11,而(a++)是先赋值再加上1  所有还是11,结果为11+11
作者: 愿望    时间: 2014-7-10 21:38
54lier 发表于 2014-7-10 15:07
a++,这个是后加加,是先把a的值赋值给a++这个表达式后,a再自动加1
++a,这个是前加加,是先把a的值加1后 ...

就像牛角尖一样,呼呼 , 3q
作者: 丶白菜你个小番    时间: 2014-7-10 22:11
你是++a和a++表达式的值分不清,++a的表达式的值是a+1;a++的表达式的值是a
作者: 龙泉长空    时间: 2014-7-10 22:50
这个应该不难吧?
作者: zxtanshui    时间: 2014-7-10 23:01
看来都有童鞋说清楚了
作者: Moebius    时间: 2014-7-10 23:12
这个主要看加号的位置,在字母前面,就是先加一,在运算,在字母后面,就是先运算,字母在加一。视频里面应该说的很清楚了吧。
作者: YKS    时间: 2014-7-11 02:15
(a++)是拿a以前的值进行运算,(++a)是对a进行+1之后拿来运算的。上面的运算中(a++)是拿a以前的值也就是10运算的,(++a)是拿(a++)的值,并在其基础上再运算一次
作者: zhs    时间: 2014-7-11 10:15
a=10;
b=(a++)+(++a);
解题分析:
第一步:运算先左边小括号,然后右边小括号,最后结果相加。
第二步:左边小括号a++,a++运算规则为:先将a投入运算,而后自增1。所以经过这一步后10参与运算,a变为11。
第三步:右边小括号++a,++a的运算规则为:先将a自增1,而后投入运算。此处注意!经过第二步后,a此时为11。将a自增后a=12,然后投入运算。
所以最终结果为b=10+12。
b=(++a)+(a++);思路同上,可以自己分析一下。

作者: 楠瓜果    时间: 2014-7-11 14:08
这里是一个先加和后加的问题,当运行第一个括号的时候a还是以10去运算,然后再是加上后面的数,但是因为a自加了一次,是变成了11,接着运算加号后面的,此时a是11,但是因为是先自加后运算,所以a变成了12,也就是10+12。你可以理解成加加在后就是先运算后执行,自加在前是先执行后运算的一个过程
作者: Devchen    时间: 2014-7-11 16:17
a++等价于将a代表a++先参与运算,之后a加1。
++a等价于,先将a加1,之后将a代表++a参与运算。
作者: 云霄之上    时间: 2014-7-12 14:28
因为a++和++a 的区别在于a++是先用a原来的值 用完之后再+1,而++a是先把a+1 然后直接用a+1的值 所以




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