2013-01-02 25 views

回答

2

這是不確定的行爲

a++, ++a在同一序列中的點完成,這是不確定的行爲。

Undefined behavior and sequence points

在標準中§5/ 4說

之前和下一序列點之間的標量對象應具有其存儲的值由 評價改性至多一次一種表達。

這是什麼意思?

非正式它指的是兩個序列點之間的變量不能被修改一次以上。在一個表達式語句中,下一個序列點通常在終止分號處,而前一個序列點在前一個語句的結尾處。表達式也可以包含中間順序點。

+0

我相信,它被稱爲「序列點」,而不是「迭代點」 –

+0

感謝的話,我一直在尋找它,我沒有得到它,所以我用迭代 – MOHAMED

3

它實際上undefined in c and c++.

未定義:修改標量值序列點,這是你的代碼做兩次之間。 f(i++, ++i)是未定義的行爲,因爲它修改了i兩次而沒有中間順序點。

A good list of definitions

+0

問題是標籤C,但該鏈接是一個C++鏈接。 – ouah

+0

@ouah是的,我是**從那裏學習**概念和它的一個很好的鏈接!,我應該刪除**?** –