2012-02-15 70 views

回答

9

C++ 11中沒有序列點,而是在關係之前進行排序和排序。

下面是一些簡單的例子,其中,行爲C++ 03和C++ 11

int x = 10; 
++++x; // well defined in C++11 

int x = 10; 
x = ++x +1; //well defined in C++11 

爲什麼之間不同?看看this的答案和相關的線程。

4

我認爲最有名的例子是預增加運算符。

int i = 0; 
++ ++ ++ i; 

在C++ 03中,這將是UB,而在C++ 11中,每個賦值都在下一次評估之前排序。

尋找差異的標準很困難,因爲他們擺脫了「順序點」術語而偏愛「之前排序」之類的內容,並且從頭開始重寫了大部分規則。

+0

'尋找差異的標準是很難的,因爲他們擺脫了「序列點」的術語'這是我發佈這個問題的確切原因。 – shuttle87 2012-02-15 12:49:23

+0

@ shuttle87是的,對不起,但至少我想出了一個例子; v) – Potatoswatter 2012-02-15 12:50:36

相關問題