在下面的程序我initiliaze 我以255 因此,在二进制,我们有:
0000 0000 1111 1111
Run Code Online (Sandbox Code Playgroud)
这是在十六进制:
0X 0 0 f f
因此根据Little-Endian布局:首先存储低位字节 - 0xff.
#include<cstdio>
int main()
{
int i=0x00ff; //I know 0xff works. Just tried to make it understable
char *cptr=(char *)&i;
if(*(cptr)==-127)
printf("Little-Endian");
else
printf("Big-Endian");
}
Run Code Online (Sandbox Code Playgroud)
所以,当我的地址存储我在CPTR应该指向低字节(假设小端,怎么这是我的系统了).
因此,*cptr包含1111 1111.这应该降到-127.因为,1位用于符号位.
但是当我打印*cptr的值时我得到-1,为什么会这样呢?
请解释我哪里出错了?