为什么将hexint转换为char*会向后打印?

我以为我在运行此代码之前了解内存的工作原理,内存是否倒退?或者我错过了什么?

代码:

#include <stdio.h>
int main()
{
    int a = 0x12345678;

    char *c = (char *)&a;

    for (int i = 0; i < 4; i++)
    {
        printf("c[%d]=%x n", i, *(c + i));
    }

    return 0;
}

输出:

c[0]=78

c[1]=56

c[2]=34

c[3]=12

回答

您刚刚所做的是演示您的计算机体系结构正在使用哪种“端序”(即,您的计算机使用“小端”,而不是“大端”)。

如果您的计算机架构改为“大端”,那么您的输出将是这样的:

c[0] = 12
c[1] = 34
c[2] = 56
c[3] = 78

您可能需要阅读此内容以获取更多信息:https : //en.wikipedia.org/wiki/Endianness


以上是为什么将hexint转换为char*会向后打印?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>