帮忙看一上这个高地址与低地址 的例子, 看不懂
帮忙看一下这个高地址与低地址 的例子, 看不懂啊
下面程序输出是多少?
Union U {
char str[2];
short int num;
};
int main() {
U u;
u.str[0] = 10;
u.str[1] = 1;
cout << u.num << endl;
system("PAUSE");
return 0;
}
复制代码
结果为266。对于整数类型,都是低字节存低位,高字节存高位,因此低位是10,高位是1,结果=1*256+10=266。
有哪位能帮我分析一下这个运算过程吗? 看不懂?
那个 1*256 为什么是乘上256? 这个256 是怎么来的?
------解决方案--------------------
不是1*256+1,你都理解错了!具体计算是这样:
char str[2];
首先存放数据10,在str[0]中是这样存放:8位,0000 1010
再是存放1,8位:0000 0001;
10在低位:所以str[2]中的数是这样存放:0000 0001 0000 1010;
u.num=2^8+10=266;
下面程序输出是多少?
Union U {
char str[2];
short int num;
};
int main() {
U u;
u.str[0] = 10;
u.str[1] = 1;
cout << u.num << endl;
system("PAUSE");
return 0;
}
复制代码
结果为266。对于整数类型,都是低字节存低位,高字节存高位,因此低位是10,高位是1,结果=1*256+10=266。
有哪位能帮我分析一下这个运算过程吗? 看不懂?
那个 1*256 为什么是乘上256? 这个256 是怎么来的?
------解决方案--------------------
不是1*256+1,你都理解错了!具体计算是这样:
char str[2];
首先存放数据10,在str[0]中是这样存放:8位,0000 1010
再是存放1,8位:0000 0001;
10在低位:所以str[2]中的数是这样存放:0000 0001 0000 1010;
u.num=2^8+10=266;