求解一下这道共同体的题为什么结果为2不是5

以下程序的输出结果是
main ( ) {
union {
char i [ 2 ] ;
int k ;
} r;
r.i[0]=2;
r.i[1]=5;
printf (''%d'',r.k);

因为存储时有大小端问题,你初始化的char类型两个字节,在真实存放时可能是[05][02]的排列,你可以尝试用%x来打印k,应该能一目了然

k没有初始值,默认为0,r的第0个就是2

这打印不是个随机值吗,你k没初始化

K 只定义为整数 为给初始值,系统默认为 0