请教一个C语言顺序点的问题

 我来答
匿名用户
2016-09-24
展开全部
请教一个C语言顺序点的问题
看下面两条语句:
int i = 3;
int k=(++i)+(++i)+(++i);
执行后k的值是多少?不同的编译器有不同的结果,可能是16(gcc),也可能是18(vc)。为什么会这样呢?
在C++标准中有一个很重要的概念:sequence points(顺序点)。原文定义如下:
At certain specified points in the execution sequence called sequence points, all side effects of previous evaluations shall be complete and no side effects of subsequent evaluations shall have taken place.
大致意思是说:在执行顺序中某些指定的点叫做顺序点。这个点上,之前所有的赋值所产生的副作用都已发生完成,并且在其后的赋值不能在该点产生任何副作用。
那么什么是副作用?C++标准指出:访问一个由可变的左值(volatile lvalue)指派的对象(basic.lval),修改一个对象,调用库I/O函数,或者调用函数等所有这些能够改变执行环境的状态的操作都是副作用。
听起来感觉有些绕口而且不容易理解。那么来看看都有哪些点是顺序点也许会帮助我们更好的理解。
分号;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dmtiu
2016-09-24 · TA获得超过381个赞
知道小有建树答主
回答量:237
采纳率:100%
帮助的人:153万
展开全部
请把你的问题放出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式