世界上只有一种真正的英雄主义,那就是认清生活的真相后还依然热爱生活。

Side effect & Sequence point

C++/Java smallfish 587℃

在《Linux C一站式学习》中有提到int a=0;
a = (++a)+(++a)+(++a)+(++a);

这个表达式的结果是什么?答案是Undefine。因为它会产生Side effect。关于边际效应与序列点的问题,除了《Linux C一站式学习》有很好地解释。另外还有一篇博文也写得很好:http://www.cnblogs.com/dong008259/archive/2011/12/14/2288068.html

当然,规范则是在C99中。

最后值得注意的是a[i++] = i;

同样会产生边际效应,很多时候一不小心可能就这么写了。

转载请注明:OpenMind » Side effect & Sequence point

喜欢 (1)