永发信息网

main() { union { char i[2]; int k; } r; r.i[0]=2; r.i[1]=0;

答案:1  悬赏:30  手机版
解决时间 2021-01-02 19:22
  • 提问者网友:容嬷嬷拿针来
  • 2021-01-02 09:17
main() { union { char i[2]; int k; } r; r.i[0]=2; r.i[1]=0; printf(“%d\n”,r.k); } 答案是多少?why?
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-01-02 10:20

正常推理应该是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字节


我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯