以下是一段C ++代码,它将整数变量地址分配给字符指针。
int ia = (1<<25) + (1<<24) + (1<<17) + (1<<8) + 4;
char *cArr = (char *)(&ia);
int i;
for(i = 0; i < 4; i++){ cout << (int)cArr[i] << endl; }
我选择了整数变量,以便MSB字节的值为3,下一个值为2,下一个值为1,LSB字节值为4.
现在,当我将整数的地址分配给字符指针时,我得到以下结果:
cArr[0] = 4
cArr[1] = 1
cArr[2] = 2
cArr[3] = 3
我对此结果有一些疑问:
顺便说一句,我在Windows PC上工作
答案 0 :(得分:2)
1)。不,这取决于计算机体系结构和硬件。以下是可以作为参考的表格。
2)。基础教程。希望这就足够了。 http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html
3)。从桌面窗口看,堆栈没有任何关系,Little Endian因此LSB排在第一位。
如果能回答您,请告诉我。
再见!
答案 1 :(得分:1)
没有。结果取决于您的系统硬件类型。只有小端机才能获得结果。
正如问题1一样,这确实是由小端或大端决定的。这是关于endian的全面介绍。 http://www.yolinux.com/TUTORIALS/Endian-Byte-Order.html
在您的情况下与堆栈无关。