编写一个程序来确定计算机是大端还是小端。
bool endianness() {
int i = 1;
char *ptr;
ptr = (char*) &i;
return (*ptr);
}
所以我就有了上面的功能。我实在不明白。 ptr = (char*) &i,我认为这意味着指向 i 所在地址处的字符的指针,因此如果 int 是 4 个字节,例如 ABCD,那么当您在其上调用 char* 时,我们是在谈论 A 还是 D ?为什么?
有人可以更详细地解释一下吗?谢谢。
具体来说, ptr = (char*) &i;当你将它转换为 char* 时,我会得到 &i 的哪一部分?
如果你有一个小端架构,i
在内存中将如下所示(以十六进制表示):
01 00 00 00
^
如果您有大端架构,i
在内存中将如下所示(以十六进制表示):
00 00 00 01
^
演员阵容char*
给你一个指向 int 第一个字节的指针(我用 a 指向它)^
),所以指向的值char*
将01
如果您使用的是小端架构并且00
如果您使用大端架构。
当您返回该值时,0
被转换为false
and 1
被转换为true
。所以,如果你有一个小端架构,这个函数将返回true
如果你有一个大端架构,它会返回false
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)