#include <stdio.h> union pw { int i; char ch[2];} a; main() {a.ch[0]=13;a.ch[1]=0;printf(″%d\n″,a.i);} 程序的输出结果是( ) A.13 B.14 C.208 D.209
满意回答
2011-09-16 09:58
共用体共用一块内存啊 假设其起始地址是3000 a.ch[0]=11;就是往3000这个内存写入00001011 a.ch[1]=0; 就是往3001这个内存写入00000000 因为char是1个字节的,所以写入数据也是1个字节 printf("%d\n",a.i); 前面说了,共用一块内存,所以a.i 的地址还是3000 %d表示输出4个字节的数据,3000 3001 3002 3003 定义a的时候,4个数据清零了,所以3002 3003这两个字节还是0 输出的还是11
-
追问
-
还是不太明白,如果是 a.ch[0]=11; a.ch[1]=12; 呢?
-
回答
-
如果是 a.ch[0]=11; a.ch[1]=12; 那么内存的4个字节从低到高为: 00001011 00001100 00000000 00000000 所以,输出的值为11+12*2^8=3083