为什么将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