int a=1 b=a++ + ++a

这样理解对不对?a++先算自身再加1,所以这一步相当于是1,然后变成2++a先自加再运算,相当于2+1=3于是b=1+3=4... 这样理解对不对?

a++先算自身再加1,所以这一步相当于是1,然后变成2
++a先自加再运算,相当于2+1=3
于是b=1+3=4
展开
 我来答
没有水印的钞票
推荐于2017-12-16 · TA获得超过768个赞
知道小有建树答主
回答量:388
采纳率:0%
帮助的人:91.6万
展开全部
事实上不是上面说的那样,把b的赋值语句分成两部分,即(a++)+(++a),其中,先执行++a,则a的值现在变成了2;
a++在当前语句里拿的是a的值(此时a值为2),而不是a自增的值,因为此时的(a++)是a的拷贝,一个临时变量int temp里放着的,而在a所在的内存里,这个自增是已经完成了的,注意是a的内存,不是那个临时变量temp!
所以这个式子的结构就清晰了,b=a+a(此时的a是++a后的结果,是2),b=4。
再看a自己本身的值,这个比较有趣,a经过了++a,变成了2,而a++改变的是内存中的a,不是临时变量,所以,此时的a=2+1=3。
总结一下,后++是拷贝的a原本的值到临时变量temp里面,在本条语句中用的是temp值,而非a的内存值,如果此时改变a的内存值(比如++a,本条语句内自增生效,改变a的内存值),对于temp没有任何影响,所以就有了后++下条语句生效(执行完本条语句后,temp变量即自动销毁),前++本条语句生效的说法。
这个前++和后++的具体运行过程,等你学了C++会有很深的了解。
某不知道名频道
2018-03-31 · TA获得超过2.6万个赞
知道小有建树答主
回答量:204
采纳率:100%
帮助的人:5.4万
展开全部

一、这样理解是正确的,这个表达式的结果是b = 4, a = 3但在写代码的时候为了增加代码的可读性,一般很少在两个变量之间写那么多+号的。

1、一般可以以加括号的形式b = (a++) + (++a)

2、或者是分成多行写b = a++ 、++a 、b += a

二、如果是加加在前面,则先算加加,如果加加在后面则此句执行完后再算加加。

1、比如:b=++a;相当于++a;b=a;而b=a++;相当于b=a;a++

2、那么:b=a++ + ++a;则后面部分的++a先执行,相当于:++a;b=a+a;a++

3、结果a先变为2,然后b等于两个a相加等于4,然后a再自增一变为3,b=2+2=4

三、后++是拷贝的a原本的值到临时变量temp里面,在本条语句中用的是temp值,而非a的内存值,如果此时改变a的内存值(比如++a,本条语句内自增生效,改变a的内存值),对于temp没有任何影响,所以就有了后++下条语句生效(执行完本条语句后,temp变量即自动销毁),前++本条语句生效的说法。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逝水南城
2013-07-21 · TA获得超过446个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:154万
展开全部
这样理解是正确的,这个表达式的结果是b = 4, a = 3

但在写代码的时候为了增加代码的可读性,一般很少在两个变量之间写那么多+号的
一般可以以加括号的形式b = (a++) + (++a)
或者是分成多行写b = a++; ++a; b += a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lhf118
2013-07-22 · TA获得超过1611个赞
知道小有建树答主
回答量:633
采纳率:100%
帮助的人:484万
展开全部
a++,用了再加
++a,加了再用
所以 (a++)+(++a)从左到右 (a=1)++=1,a=2,(++(2))=3
你的理解正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-07-21 · 超过12用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:18.6万
展开全部
a++ //int b=a; a=+1;return b;

++a //return a=+1;

// 后面是系统自动执行的 这样一目了然了吧

例如cout<<a++ 实际上是cout<<b;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式