c+=c++怎么理解

 我来答
聂山绿
2020-04-27 · TA获得超过181个赞
知道答主
回答量:137
采纳率:100%
帮助的人:63.6万
展开全部
因为++的优先级比+=运算符的优先级要高,所以
c+=c++
等价于
c+=(c++),又等价于
c
=
(c
+
(c++));
但需要注意的是,这个表达式的最终结果是不确定的,因为
c
+
(c++)
这个表达式
中,无法确定是+号前面的先求值,还是+号后面的先求值,这是由编译器决定的,C/C++标准中也是这样讲的。
结果就是,假如c=1;那么,如果+号左边的先求值,就是
c
=
1
+
1
=
2;
如果是+号右边的先求值,就是c
=
2
+
1
=
3;
在你的机器上,可能会得到2,也可能会得到3,但是你不能保证在别人的机器上也一定是2或者是3。因此,像这样的表达式应该避免,尽量不要写。
针对你对问题的补充,我再说一下,
你的结果正好是我所说的,编译器从+号右边先求值了
顺序如下:
c
=
c
+
c++;
先计算
+号右边的c++,需要注意的是,是先求值,后自增,即如果c=1,c++的值是1,但运算
之后c就变成了2了,这样就是相等于
c
=
(c+1)
+
c
=
2c
+
1了
因为先对+号右边求值,所以c++的值虽然还是c,但运算之后+号左边后求值时的c已经是c++运算结果的(c+1)了,所以才等于
(c+1)
+
c
=
2c+1
就是这么回事,我结合ANSI
C语言标准,已经说的非常清楚了,希望对你有帮助:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式