そのオブジェクトを指すをにT
変換することにより、タイプのオブジェクトの表現を見ることができます。少なくとも実際には: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*
か?また、そのキャストにはどの変換が必要ですか?キャストするとすぐに未定義動作を呼び出しますか?T*
このようなタイプをキャストできますか?これを行うときに何を信頼できますか?