形容心情轻松的成语:关于共用体的问题

来源:百度文库 编辑:高考问答 时间:2024/04/30 13:57:59
我有两道题,如下:
1.union { char i[2];
int k;
}r;
r.i[0]=2;r.i[1]=0;
printf("%d\n",r.k);
2.union { int k;
char i[2];
}*s,a;
s=&a;
s.i[0]=0x39;s.i[1]=0x38;
printf("%x\n",s.k);
第一题的答案为2,第二题的答案为3938.为什么第一题r.k只等于r.i[0]的值.而第二题却等于s.i[0]和s.i[1]两个值呢?
第二道中0x39是只39的十六进制吧,而在s.k中却只输出39,它强制那去了0x,那么为什么在第一题中却不把字符2转换为ASC||码50呢?