C语言的共用体的一个小问题,这个结果应该是char型强制转化为了int型,结果不应该是77,4D,D吗?

#include<stdio.h>
union int_st
{
int k;
char ch[2];
};
main()
{
union int_st x;
x.ch[0]='M';
x.ch[1]='n';
printf("k=%d\nk=%X\n%c\n",x.k,x.k,x.ch);
}

printf("k=%d\nk=%X\n%c\n",x.k,x.k,x.ch【0】);

你在调用数组!追问

那个调用没问题的

追答

你写入的时候是 x.ch[0]='M';x.ch[1]='n'; 这明明是数组。
而 %c 是 char 而不是 char[2]!

追问

我明白了,int 占4字节,char 1字节,char赋值给int时高位是空的,具体是什么值我也不太清楚,你说的那个问题也是个问题,谢谢你的回答

温馨提示:答案为网友推荐,仅供参考
相似回答