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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 愿望 中级黑马   /  2014-7-10 14:53  /  2295 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 愿望 于 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  了呢, ? 球详解啊!  


评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

14 个回复

倒序浏览
哪种算法都是对的。看这里:http://bbs.itheima.com/thread-128465-1-1.html
回复 使用道具 举报
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

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
b=(a++)+(++a)     (a++)的时候   是a赋值后在+1  所以(a++)=10,  在a++赋值后a变成了11;(++a)是a加上1后在计算为12,所以是10+12;
回复 使用道具 举报
b=(++a)+(a++)  中  (++a)是先加1在赋值所以为11,而(a++)是先赋值再加上1  所有还是11,结果为11+11
回复 使用道具 举报
54lier 发表于 2014-7-10 15:07
a++,这个是后加加,是先把a的值赋值给a++这个表达式后,a再自动加1
++a,这个是前加加,是先把a的值加1后 ...

就像牛角尖一样,呼呼 , 3q
回复 使用道具 举报
你是++a和a++表达式的值分不清,++a的表达式的值是a+1;a++的表达式的值是a
回复 使用道具 举报
这个应该不难吧?
回复 使用道具 举报
看来都有童鞋说清楚了
回复 使用道具 举报
这个主要看加号的位置,在字母前面,就是先加一,在运算,在字母后面,就是先运算,字母在加一。视频里面应该说的很清楚了吧。
回复 使用道具 举报
YKS 中级黑马 2014-7-11 02:15:44
11#
(a++)是拿a以前的值进行运算,(++a)是对a进行+1之后拿来运算的。上面的运算中(a++)是拿a以前的值也就是10运算的,(++a)是拿(a++)的值,并在其基础上再运算一次
回复 使用道具 举报
zhs 中级黑马 2014-7-11 10:15:41
12#
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++);思路同上,可以自己分析一下。
回复 使用道具 举报
这里是一个先加和后加的问题,当运行第一个括号的时候a还是以10去运算,然后再是加上后面的数,但是因为a自加了一次,是变成了11,接着运算加号后面的,此时a是11,但是因为是先自加后运算,所以a变成了12,也就是10+12。你可以理解成加加在后就是先运算后执行,自加在前是先执行后运算的一个过程
回复 使用道具 举报
a++等价于将a代表a++先参与运算,之后a加1。
++a等价于,先将a加1,之后将a代表++a参与运算。
回复 使用道具 举报
因为a++和++a 的区别在于a++是先用a原来的值 用完之后再+1,而++a是先把a+1 然后直接用a+1的值 所以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马