共用体,{union
{char i[2];int k;}r;r.i[0]=2;r.i[1]=0;printf("%d",r.k)}结果是?能解释下嘛?
共用体,{union {char i[2];int k;}r;r.i[0]=2;r.i[1]=
答案:2 悬赏:70 手机版
解决时间 2021-02-27 02:28
- 提问者网友:动次大次蹦擦擦
- 2021-02-26 07:00
最佳答案
- 五星知识达人网友:封刀令
- 2021-02-26 07:11
正常推理应该是2
union内存时按照元素最大的分配内存,所以r的size为4
char[3] char[2] char[1] char[0]
为char[0] 赋值为2, 为char[1]赋值为1
所以就变成了
char[3] char[2] 0 2
char[3] 和char[2] 值是不固定的(没有为之初始化,随机值,如果先memset(&r,0,sizeof(r)); 就清0了)
但是末尾2个字节一定是2
printf("%d\n",r.k & 0xff);////末2字节
union内存时按照元素最大的分配内存,所以r的size为4
char[3] char[2] char[1] char[0]
为char[0] 赋值为2, 为char[1]赋值为1
所以就变成了
char[3] char[2] 0 2
char[3] 和char[2] 值是不固定的(没有为之初始化,随机值,如果先memset(&r,0,sizeof(r)); 就清0了)
但是末尾2个字节一定是2
printf("%d\n",r.k & 0xff);////末2字节
全部回答
- 1楼网友:等灯
- 2021-02-26 07:51
答案是2 ,编译器输出来的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯