warning, operation may be undefined

0

dlaczego taka operacja powoduje warning jak w temacie?

x[a] = y[a++];

wydaje mi się, że jest tylko jedna możliwość interpretacji tej instrukcji.

EDIT:
działa również prawidłowo, ale warningi mnie zazwyczaj drażnią :P

0

A skąd wiesz czy najpierw wykona się lewa strona (tzn komputer zapamięta sobie gdzie ma wpisać dane) a dopiero potem wykona się strona prawa (czyli wyliczenie wartości)?

0
krwq napisał(a):

dlaczego taka operacja powoduje warning jak w temacie?

x[a] = y[a++];

wydaje mi się, że jest tylko jedna możliwość interpretacji tej instrukcji.

EDIT:
działa również prawidłowo, ale warningi mnie zazwyczaj drażnią :P

//foo//typ//foo// b = y[a++];
x[a] = b;
0

Może nie działać prawidłowo. Nie możesz wykorzystywać wartości zmiennej, którą w tym samym czasie zmieniasz.

0

myślałem, że zawsze wszystko wykonuje się od prawej do lewej w przypadku lvalue = rvalue i w praktyce też zawsze mi się to zgadzało, ale skoro mówicie, że to nie jest reguła to najwidoczniej tak nie jest. dzięki :)

0

W niektórych językach (np. C#) taka operacja jest zdefiniowana (chociaż nie sprawdzałem).
w C i C++ niestety jest to undefined behaviour.

1 użytkowników online, w tym zalogowanych: 0, gości: 1