long int 高低位指针

long int high and low bits pointers

我正在尝试在 C 中实现改进的顺序乘法算法,其中乘积寄存器的大小是被乘数和乘数的两倍。在 C 中,一个 int 是 4 个字节,一个 long int 是 8 个字节。我想独立访问高 32 位和低 32 位。所以我指出了低位和高位:

long long int product = 0;
int* high = &product;
int* low = &product;
low++;

但这没有用,因为我认为如果一个 int 分配了 4 个字节,那么一个 long int 将分配 8 个字节,并且指针将指向已分配内存的 MSB。我不确定这是否真的是分配的方式。谁能帮我解决这个困惑。

我通过这样做解决了问题:

long long int product=0;
int* low = &product;
int* high = &product;
high++;

但我仍然很困惑为什么它能正常工作;

您可能正在使用 Little-Endian 的计算机。在小端机器上,最低有效字节在前。