union笔试题

来源:互联网 发布:js让div显示 编辑:程序博客网 时间:2024/05/29 04:10

【中兴】

计算输出?

#include <stdio.h>int main(){    union{        int i;        unsigned char ch[2];    } student;    student.i = 0x1420;    //printf("%d\n", student.i);    printf("%d %d\n", student.ch[0], student.ch[1]);    return 0;}

【解】:因为union里无论存储多少变量,其长度都是最长的那个变量,并且在内存中的存储空间也是以最长变量来分配的,给i赋值后,union的位置就是0x1420的一个整数,转化成10进制就是5152,5152=2^5+2^10+2^12,又因为内存是从低往高存储,最低8位就是32(00001000),再往上20(00101000),所以输出32 20。