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

 我来答
梦想家运营官
2016-03-05 · TA获得超过1783个赞
知道小有建树答主
回答量:375
采纳率:83%
帮助的人:151万
展开全部
  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函数,或者调用函数等所有这些能够改变执行环境的状态的操作都是副作用。
单单的行人
2016-03-05 · 超过15用户采纳过TA的回答
知道答主
回答量:171
采纳率:0%
帮助的人:36.7万
展开全部
什么问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式