我看到了一些关于如何找到计算机体系结构的字节序的例子。假设我们有一个指向int数据类型的整数指针。假设int值为0x010A0B12。在小端架构中,最不重要的字节,即12,将存储在最低的内存地址中,对吧?因此,在4字节整数中,最低位字节将为12。
现在,进行检查。如果我们声明一个char指针p,并将整数指针强制转换为char *并将其存储在p中,然后打印p的解引用值,我们将获得有关计算机体系结构字节序的线索。如果它是12,则表示小端;01表示大端。听起来真的很方便...
现在,进行检查。如果我们声明一个char指针p,并将整数指针强制转换为char *并将其存储在p中,然后打印p的解引用值,我们将获得有关计算机体系结构字节序的线索。如果它是12,则表示小端;01表示大端。听起来真的很方便...
int a = 0x010A0B12;
int *i = &a;
char *p = (char*)i;
printf("%d",*p); // prints the decimal equivalent of 12h!
这里有几个问题。由于指针是强类型的,那么字符指针是否应该严格指向char数据类型?另外,使用%d打印有什么问题吗?难道我们不应该使用%c来打印字符吗?