假设我有以下代码片段:
int8_t *a = 1;
int16_t *b = (int16_t*)(a + 1);
int32_t *c = (int32_t*)b + 2;
然后 a = 1, b = 2, c = 10。(这里我也不确定,因为我使用 printf() 和 %i 并且收到了关于此的警告。)
我不太确定这是如何工作的。我有一些理论,但我更喜欢阅读一些关于它的文档。
有人可以给我一个关键字来搜索或向我解释这三种情况下的确切行为吗?由于缺少要搜索的单词,我无法在 SO 或 google 上找到有关此问题的信息。
我输入时输出会改变吗
int16_t *a = 1;
int32_t *b = (int16_t*)(a + 1);
int64_t *c = (int32_t*)b + 2;
反而?