求高手解答C++入门问题!!!

例1:a=1;c=(a++)+(a++);执行后,c的值为2,而a的值为3例2:a=1;b=1;c=(++a)+(a++)+(b*=a++)+(a*=2)+(a*=a++... 例1:a = 1; c = ( a++ ) + ( a++ );执行后,c的值为2,而a的值为3
例2:a = 1; b = 1; c = ( ++a ) + ( a++ ) + ( b *= a++ ) + ( a *= 2 ) + ( a *= a++ );
    执行时,先分配临时内存,然后由于5个“()”,其计算顺序是从左向右,
    计算++a的值,返回增一后的a的地址,a的值为2
    计算a++的值,返回临时内存的地址,a的值仍为2
    计算b *= a++中的a++,返回临时内存的地址,a的值仍为2
    计算b *= a++中的“*=”,将a的值写入临时内存,计算得b的值为2,返回b的地址
    计算a *= 2的值,返回a的地址,a的值为4
    计算a *= a++中的a++,返回临时内存的地址,a的值仍为4
    计算a *= a++中的“*=”,将a的值写入临时内存,返回a的地址,a的值为16
    计算剩下的“+”,为了进行计算,将a的值写入临时内存,得值16 + 16 + 2 + 16 + 16为66,写入c中
    计算三个a++欠下的加一,a最后变为19.

例2我看懂了,但是按照例2的计算,例1中a的值应该是2,c的值应该是3啊,求解!!!
展开
 我来答
百度网友ac86dcb93
2011-03-09 · TA获得超过116个赞
知道答主
回答量:176
采纳率:0%
帮助的人:144万
展开全部
注意a++和++a是不一样的,++a即时生效,a++要到该语句结束后才生效。
例一,a++返回1,再a++还返回1,所以c为2,然后求解欠下的两次++,然后a=3;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式