Czytanie wskaźników

Czytanie wskaźników
AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 78
0

Witam..mógłby ktoś pomóc w rozpracowaniu czytania takich wskazników:

tzn z metody prób i błędów wiem ze wyrażenia

Kopiuj
*tab++;

jest równe,

Kopiuj
*(tab++)

Co oznacza, że najpierw zostanie wypisana wartość zmiennej tab, a potem przesunie się o 4 bajty w prawo. Rozumiem, że operatór * jest mocniejszy niż ++, zatem pierwszy przypadek rozumiem, dlaczego tak jest, ale nie rozumiem drugiego. Skoro nawiasy są najsilniejsze dlaczego nie wykona się najpierw to co w nawiasie a potem dopiero przypisanie ?

Czy takie wyrażenia czyta się inaczej niż wskaźniki ( najpierw do prawej potem do lewej zaczynając od nazwy wskaźnika...) , tzn od lewej do prawej i najpierw to co na zewnątrz?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
andrzejbodziuzbychujarek napisał(a):

Rozumiem, że operatór * jest mocniejszy niż ++

Wręcz odwrotnie.
Z tym że ++ przyrostkowy owszem zwiększa wartość zmiennej zaś zwraca starą wartość.

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 78
0

a to w tym rzecz,

hm... ale też nie rozumiem...np czemu coś takiego:

Kopiuj
int * wsk = new int(4);
cout<<*wsk++<<*wsk<<*wsk; 

zawsze wypisuje 4, dopiero nowy "cout" wypisze mi 0...

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Bo to UB. Chodzi o to że w przypadku (a+b)*(c+d) nie ma gwarancji że najpierw zostanie policzone a+b a później c+d
Jeden kompilator zrobi tak drugi inaczej.

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 78
0

Wiesz może gdzie mogę znaleźć listę UB ? Ciągle wymyślam sobie nowe rzeczy do testowania, a pózniej okazuje się, że to UB

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

UB jest zawsze, gdy nie wiesz co masz w zmiennej, albo wykonujesz operacje na wskaźnikach, które wskazują nie wiadomo gdzie, albo robisz inne dziwne rzeczy i nie ma pewności co będzie wynikiem :P. Listy nie musisz szukać, wystarczy zrozumieć podstawy 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.