Мы можем посмотреть на представление объекта типа T
путем преобразования a T*
, который указывает на этот объект в char*
. По крайней мере, на практике:
int x = 511;
unsigned char* cp = (unsigned char*)&x;
std::cout << std::hex << std::setfill('0');
for (int i = 0; i < sizeof(int); i++) {
std::cout << std::setw(2) << (int)cp[i] << ' ';
}
Это выводит представление 511
в моей системе: ff 01 00 00
.
Существует (конечно) какое-то определенное поведение, определенное здесь. Какая из бросок позволяет мне преобразовать int*
в unsigned char*
и какие преобразования делают это приведение? Я вызываю поведение undefined, как только я бросаю? Можно ли использовать любой тип T*
следующим образом? На что я могу положиться при этом?