2012-01-30 72 views
1

可能重复:
Undefined Behavior and Sequence PointsC++赋值运算符关联

以下C++代码之后,阵列包含:0,1,2,3,4

int a[5] = {0,1,2,3,4}; 
int i = 2; 
a[i++] = a[i++]; 

我期望它是:0,1,3,3,4

任何人都可以解释我为什么?

+0

嗯 - 你说你要这个干什么?还是出于好奇? – 2012-01-30 14:45:25

+0

@马丁,是的,只是好奇心。 – clamp 2012-01-30 14:45:47

+0

http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points/ – 2012-01-30 14:46:17

回答

8
a[i++] = a[i++]; 

因为它是未定义行为。

良好阅读:
Sequence Points
Undefined Behavior and Sequence Points

+0

您是否有规格链接? – 2012-01-30 14:45:55

+0

@Martin:查看链接内联。他们有你可能需要的每个标准规范。 – 2012-01-30 14:49:30