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
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
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)?
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;
Może nie działać prawidłowo. Nie możesz wykorzystywać wartości zmiennej, którą w tym samym czasie zmieniasz.
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 :)
W niektórych językach (np. C#) taka operacja jest zdefiniowana (chociaż nie sprawdzałem).
w C i C++ niestety jest to undefined behaviour.