永发信息网

C语言中的UNIOn?

答案:2  悬赏:10  手机版
解决时间 2021-02-03 08:05
  • 提问者网友:抽煙菂渘情少年
  • 2021-02-02 19:35
uniion也可以定义一个包含多个不同变量类型,但这些变量只共有同一个内存空间,每次只能使用其中的一种变量存储数据。(这句话我不理解。谁来指点下,新手上路啊)可以解释一下为什么这样吗?

一楼的高手,谢谢你的回答我明白了!可是还有一点疑惑……为什么data.a 要0乘以30
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-02-02 21:12
首先,union是小写的,其次,uniion有拼写错误。

union u {
int a;
char c;
} data;

这里的a和c共享一块存储空间。若不考虑字节对齐,data所占的字节数是max(sizeof(int), sizeof(c)),在32位机器上就是4. 如果执行语句 data.c = '0' ,那么,data.a的数值是0x30 —— 共享存储。
全部回答
  • 1楼网友:舊物识亽
  • 2021-02-02 22:06
vc 没有 union regs 结构体。 老 tc 的 dos.h 里有。用在基本设备,例如鼠标器等。 例如 #include void getmousestatus(int *button,int *x,int *y) { union regs m, o; m.x.ax=3; int86(0x33,&m,&o); *button=o.x.bx &7; //gets only first 3 bits *x=o.x.cx; *y=o.x.dx; } //... 查鼠标输入 switch (*button) { case 1: //button==001, bit 0 //左 鼠标健 按下 break; case 2: //button==010, bit 1 //右 鼠标健 按下 break; case 4: //button==100, bit 2 //中 鼠标健 按下 break; //combine bit patterns to test multiple buttons //ie, to test left and right buttons, test binary 011, or 3 dec. } 过时的技术,不必学。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯