2012-02-15 8 views

Odpowiedz

9

Brak punktów sekwencji w C++ 11, raczej są one sekwencjonowane przed i sekwencjonowane po związkach.

Oto trywialne przykładami, w których zachowanie się różnić między C i C++ 03 ++ 11

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

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

co? Spójrz na odpowiedź this i powiązane wątki.

4

Myślę, że najlepiej znanym przykładem jest operator przed inkrementacją.

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

W języku C++ 03 będzie to UB, aw C++ 11 każde zadanie zostanie zamówione przed kolejną oceną.

Przeszukiwanie Standardu pod kątem różnic jest trudne, ponieważ pozbyli się terminologii "sekwencji punktów" na korzyść "zamówionego przed" i tym podobnego i przepisali wiele zasad od zera.

+0

"Szukanie standardu dla różnic jest trudne, ponieważ pozbyli się terminologii" sekwencji punktów ". To jest dokładny powód, dla którego napisałem to pytanie. – shuttle87

+0

@ shuttle87 Tak, przepraszam za to, ale przynajmniej wymyśliłem jeden przykład; – Potatoswatter

Powiązane problemy