系统粉 > 电脑问答 > 其他问答

已解决c++ 共用体地址问题

提问者:雪樱恨  |  浏览次  |  提问时间:2017-02-01  |  回答数量:7

c++ 共用体地址问题int main (void){union{char i[2];short int k;}r;r.i[0]=0;r.i[1]=2;cout<<r.k;return 0;}该程序结果为512,请问是怎么来的呢??如何取得i或者k的地址呢?我还是没搞清楚~谢谢

已有7条答案
暮色惊心

暮色惊心

回答数:30  |  被采纳数:134

r.k为2字节宽,与r.i[]占据相同的内存单元,r.i[0]为r.k的低字节,r.i[1]为高字节,所以有结果r.k=2*256+0=512
取i的地址用r.i即可,取k的地址用&r.k
2017-02-01 18:55:28
赞 3
这娃爱猫

这娃爱猫

回答数:146  |  被采纳数:9

由于低字节在前,高字节在后,所以r.i[0]和r.i[1]组成的16进制值为:0x200,不就是512吗?
2017-02-01 22:36:19
赞 14
laidingwei

laidingwei

回答数:209  |  被采纳数:50

256从哪里来的呢??0X200又怎么来的啊.......能不能再详细的说下,谢谢了

内存单元是16进制组成的吗(0x200)?小弟是新手,麻烦大家了
2017-02-01 19:26:45
赞 20
大织男尼桑w

大织男尼桑w

回答数:126  |  被采纳数:100

http://bbs.cfanclub/thread-284576-1-1.html
2017-02-01 23:09:35
赞 12
深海尋人深海遇

深海尋人深海遇

回答数:143  |  被采纳数:71

只知道OX(高字节)(低字节).....上面写的2*256还是不明白....
看来前面有地方没理解好
2017-02-02 05:02:13
赞 14
lzq635243502

lzq635243502

回答数:6  |  被采纳数:3

16进制的0x200就是十进制的512呀,两个字节的内容分别是00 02
2017-02-02 03:42:27
赞 0
wc8888886

wc8888886

回答数:67  |  被采纳数:125

啊...谢谢,脑袋突然卡住了.....

6楼已解决
2017-02-02 13:58:12
赞 6
相关问答
最新其他问答
解决方法