Иными словами слева или справа идут младшие биты в ячейках
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
setlocale(0, "");
long x = 20;
long *pi = &x;
short *ps = reinterpret_cast<short*>(&x) + 1;
cout
<< (static_cast<void*>(pi) == ps) << '\n';
cout
<< pi << '\n'
<< ps << '\n'
<< *pi << '\n'
<< *ps << '\n';
return 0;
}
Output:
0 // false
0x3bfdcc
0x3bfdce
20
0
Или это потому что адрес, больший другого, на самом деле не "правее", а "левее"?
*ps равен нулю, даже если
отнять от ps единицу, а если прибавить или отнять
больше единицы, то случайному значению. Он равен двадцать, только если ничего не прибавлять