次のコードスニペットがあるとします。
int8_t *a = 1;
int16_t *b = (int16_t*)(a + 1);
int32_t *c = (int32_t*)b + 2;
次に、a = 1、b = 2、c = 10です(%iでprintf()を使用し、これに関する警告が表示されたため、ここでもわかりません。)
これがどのように機能するのかよくわかりません。私にはいくつかの理論がありますが、それに関するいくつかのドキュメントを読むことを好みます。
この3つのケースの正確な動作を検索または説明するためのキーワードを誰かに教えてもらえますか?検索する単語が不足しているため、SOまたはgoogleでこの問題に関する情報を見つけることができませんでした。
入力すると出力は変わりますか
int16_t *a = 1;
int32_t *b = (int16_t*)(a + 1);
int64_t *c = (int32_t*)b + 2;
代わりは?