#include<stdio.h>void main( ){union{int i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n" ,s->c[0]);}
运行结果为9,也就是16进制的0x39。解析:union为公用体,里面的i,k ,c共用同一段内存,打印c[0]就相当于读了i[0]的内存,16进制是0x39,转为字符就是9.