C++顺序点和副作用

一、概述
1.副作用(side effect)
在计算表达式时对某些东西(存储在变量中的值)进行了修改
2.顺序点(sequence point)
程序执行过程中的一个时间点
3.顺序点类型
分号(;),逗号(,);冒号(:);或运算符(||)
4.顺序点的作用
在这个点之后,将确保前面的副作用都已生效。这意味着程序处理下一条语句之前,赋值运算符、递增运算符和递减运算符执行的所有修改都必须完成。另外,任何完整的表达式末尾都是一个顺序点,完整表达式的定义:不是另一个更大表达式的子表达式。完整表达式的例子有:表达式语句中的表达式部分以及用作while循环中检测条件的表达式。
二、例证
1.例证1

while(guests++ < 10)
	cout << guests << endl;

分析:由于while循环中的测试表达式guests++ < 10是一个完整的表达式,所以该表达式的末尾是一个顺序点。所以测试中比较的是guests与10的大小关系,在该表达式完成之后,guests将递增1,所有cout打印的guests值为递增之后的值。

2.例证2

i++ < 6 || i ==j 

由于||是一个顺序点,所以比较的是i < 6,然后i++,此后与j比较的i已经递增,且c++规定||的左边表达式优先于右边的表达式,如果左边为false,右边的表达式将不计算

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值