2012-01-30 104 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