int *x = NULL;
cout << --x;
Dlaczego na konsoli wypisuje FFFFFFFC?
int *x = NULL;
cout << --x;
Dlaczego na konsoli wypisuje FFFFFFFC?
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.
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.