永发信息网

共用体,{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
共用体,{union
{char i[2];int k;}r;r.i[0]=2;r.i[1]=0;printf("%d",r.k)}结果是?能解释下嘛?
最佳答案
  • 五星知识达人网友:封刀令
  • 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字节
全部回答
  • 1楼网友:等灯
  • 2021-02-26 07:51
答案是2 ,编译器输出来的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯