浅谈C与C++中顺序点与副作用.docVIP

  • 2
  • 0
  • 约1.57万字
  • 约 5页
  • 2017-08-06 发布于河南
  • 举报
浅谈C与C中顺序点与副作用

浅谈C/C++中的顺序点和副作用 C/C++中有一个叫做顺序点(Sequence Point)的概念,通常我们并没有必要去了解和深究。但如果掌握了顺序点的概念,一些晦涩的表达式(比如某些无聊的面试题目)可能就会变得简单明了了。为了介绍顺序点,就不得不提到副作用(Side Effect)。 一.副作用(side effect) 表达式有两种功能:每个表达式都产生一个值( value ),同时可能包含副作用( side effect )。副作用是指改变了某些变量的值。 如: 1:20 //这个表达式的值是20;它没有副作用,因为它没有改变任何变量的值。 2:x=5 // 这个表达式的值是5;它有一个副作用,因为它改变了变量x的值。 3:x=y++ // 这个表示有两个副作用,因为改变了两个变量的值。 4:x=x++ // 这个表单时也有两个副作用,因为变量x的值发生了两次改变。 二.求值顺序点 表达式求值规则的核心在于 顺序点( sequence point ) [ C99 6.5 Expressions 条款2 ] [ C++03 5 Expressions 概述 条款4 ]。 顺序点的意思是在一系列步骤中的一个“结算”的点,语言要求这一时刻的求值和副作用全部完成,才能进入下面的部分。在C/C++中只有以下几种存在顺序点: 1)分号; 2)未重载的逗号运算符的左操作数赋值之后(即,

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档