uniion也可以定义一个包含多个不同变量类型,但这些变量只共有同一个内存空间,每次只能使用其中的一种变量存储数据。(这句话我不理解。谁来指点下,新手上路啊)可以解释一下为什么这样吗?
一楼的高手,谢谢你的回答我明白了!可是还有一点疑惑……为什么data.a 要0乘以30
C语言中的UNIOn?
答案:2 悬赏:10 手机版
解决时间 2021-02-03 08:05
- 提问者网友:抽煙菂渘情少年
- 2021-02-02 19:35
最佳答案
- 五星知识达人网友:七十二街
- 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 —— 共享存储。
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.
}
过时的技术,不必学。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯