C拾遗(二)Side Effect和Sequence Point
来源:互联网 发布:淘宝淘抢购类目群 编辑:程序博客网 时间:2024/06/04 20:04
1.何时产生Side Effect ?
(1)调用一个函数时
(2)使用某些运算符时,比如(++--=复合赋值)
2.何时产生Sequence Point ?
(1)函数开始调用之前,比如foo(f(),g())在调用foo()之前内部参数表达式或函数计算完之后是Sequence Point
(2)条件运算符、逗号运算符、逻辑与、逻辑或第一个表达式计算完成后
(3)在一个完整的生命末尾比如:int a[10](Sequence Point),b[20](Sequence Point)
(4)在一个完整的表达式末尾
(5)在库函数返回时(包括宏定义的库函数)
3.C标准关于Side Effect和Sequence Point的规定 ?
(1)代码中某些点是Sequence Point,在程序执行到一个Sequence Point时,在此之前的所有Side Effect都必须执行完,而在此之后的所有Side Effect一个都没有执行
(2)在两个Sequence Point之间的所有Siede Effect的执行顺序是不确定的或者说是由编译器决定的
4.写表达式必须遵循的两个规则:
1.在两个Sequence Point 之间,同一个变量的值只允许改变一次;
2.如果在两个Sequence Point之间,既要读又要写一个变量的值,必须在读写顺序确定的情况下才可以
举例:
int a=0;(Sequence Point)
a=(++a)+(++a)+(++a)+(++a)+(++a);(Sequence Point)
其中,每个++a都会产生一个Side Effect ,那么在上面两个Sequence Point之间的5个Side Effect的发生顺序是不确定的,所有上面表达式的结果a的值也是undefined!!!
- C拾遗(二)Side Effect和Sequence Point
- C语言 side effect 和 sequence point
- C语言 side effect 和 sequence point
- C语言 side effect和sequence point
- C语言 side effect和sequence point
- c语言中的side effect & sequence point
- c/c++ Side-Effect-&-Sequence-Point
- C语言Side Effect与Sequence Point
- C/C++中的side effect(负效应) 和sequence point(序列点)
- 深入理解C语言-----副作用(Side Effect)和顺序点(Sequence Point)
- Side Effect与Sequence Point
- Side Effect与Sequence Point
- sequence point顺序点,side effect副作用
- i++ : 顺序点(sequence point) 与 副作用 (side effect)(转)
- i++ : 顺序点(sequence point) 与 副作用 (side effect)
- i++ : 顺序点(sequence point) 与 副作用 (side effect)
- i++ : 顺序点(sequence point) 与 副作用 (side effect)
- i++ : 顺序点(sequence point) 与 副作用 (side effect)
- 个人新工作,第一个项目实施
- fedora安装bochs
- jsp简介与内置对象
- 定时发推工具Buffer喜忧参半:获得40万美元投资,被踢出美国
- JSP探索
- C拾遗(二)Side Effect和Sequence Point
- Axis单个Webservice的session管理
- Oracle中的索引
- Referenced file contains errors (http://tuckey.org/res/dtds/urlrewrite2.6.dtd)
- this指针
- EL表达式
- DateTime.Now.Ticks和生成随机数
- java socket技术详解
- ubutu11.04上搭建git服务器