我有以下代码
int main()
{
int arr[3] = {2, 3};
char *p;
p = arr;
p = (char *)((int*)(p));
printf("%d, ", *p);
p++;
p = (int*)(p+1);
printf("%d", *p);
return 0;
}
o/p-2,0
但我想知道它是如何在第二个 printf 中打印 0 的,我知道所有关于这些元素如何存储little-endian
的记忆4 byte integer
,如下
00000010 00000000 0000000 00000000 00000011 00000000 00000000 00000000
所以,在第一次printf
我们得到 2 作为答案,但在第二次printf
指针是second byte
0 但它现在是一个整数指针但它如何打印 0,因为它必须检查最多 4 个字节的内存然后它必须打印整个数据最多4个字节。我认为它将打印 3 个最多 4 个字节。
我想要的是整数数据是如何通过 printf 打印的,任何人都可以告诉这一点。