联合体的分配问题
union UNION{
int i;
char a;
};
int main(int argc, char* argv[])
{
UNION aUnion;
aUnion.i = 56;
cout << aUnion.a << endl;
cout << aUnion.a << endl;
cout << aUnion.a << endl;
cout << aUnion.a << endl;
system("pause");
return 0;
}
为何输出结果是8
#include <iostream>
using namespace std;
union UNION
{
int i;
char a;
};
int main(int argc, char* argv[])
{
UNION aUnion;
aUnion.i = 56;//56存储结果为:00000000 00000000 00000000 00111000,小端存储,所以56在最前面,后面三个字节都是0
cout << aUnion.a << endl; //输出的是ASCII为56的字符,即8
cout << aUnion.a << endl; //输出的是ASCII为0的字符,什么也没有
cout << aUnion.a << endl; //输出的是ASCII为0的字符,什么也没有
cout << aUnion.a << endl; //输出的是ASCII为0的字符,什么也没有
system("pause");
return 0;
}
可以看看我这个帖子:C语言中浮点数存储与%f输出细节探究
页:
[1]