dekrementacja wskaźnika ustawionego na null

0
int *x = NULL;
cout << --x;

Dlaczego na konsoli wypisuje FFFFFFFC?

0

To jest UB, może wypisać cokolwiek, lub zrobić cokolwiek innego.

Ale zachowanie jest bardzo sensowne: przy inkrementacji wskaźnik musi znać wielkość typu na który wskazuje, bo o tyle się przesuwa. int ma z reguł 4 bajty, więc o tyle zostało wykonane przesunięcie.

0

Właśnie na początku też myślałem, że akcja nie ma sensu i powinien być totolotek co się stanie, ale sprawdzałem to na VS 2015, VS 2017 i na ideone i wszędzie było to samo, wiec chciałem się dowiedzieć czemu.

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