一个C语言题目

main(){ union { int k; char i[2]; }s; s.i[0]=Ox39; s.i[1]=Ox38```````````````````(*) printf("s.k=%x\n",s.k);}答案是3839带*的Ox38是什么意思?还有s.k没有赋值嘛,怎么输出?另外%x是输出什么格式?最好答案也解释下,谢谢了

不是Ox �0�2 是0x这里是联合,以最大的数据块作为整个联合的大小!当给i的两个元素赋值后:内存中存放是:低地址 �0�2 �0�2 高地址0x39 �0�2 �0�2 �0�2 �0�2 0x38 �0�2 �0�2 �0�2 �0�2 �0�20x00 �0�2 �0�2 �0�2 �0�20x00所以以int输出的话,因为int占4个字节,把这四个字节组合,因为CPU是小端存储。所以高地址的是int的高位,低地址是地位:0x00003839 �0�2== 0x3839
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-12
0x38 和0x39是16进制的表示方法。%X 无符号以十六进制表示的整数
相似回答