Tak jak w tytule
szybko please a[i]=i++;
w petli to ub czy nie?
Zarówno a[i]=i++
jak i a[i++] = i
to undefined behavior (W C i C++).
value computation ("obliczenie wartości") wyrażenia i
(czy to jako samo i
czy w a[i]
) oraz side effects ("efekty uboczne") wyrażenia i++
(czy to samo i++
czy w a[i++]
) są unsequenced. To oznacza, że nie wiadomo co stanie się najpierw - obliczanie wartości czy efekty uboczne. Jeżeli nie wiadomo co się stanie i dotyczy to jednego obiektu to mamy do czynienia z zachowaniem niezdefiniowanym.
Sprawa komplikuje się w przypadku typów zdefiniowanych przez użytkownika i przeciążonych operatorów (ale to tylko dla C++).
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
karolinaakarolinaafor(;i<5;) a[i++]=i;
też UB ?