如何给这种成员赋值?
结构体定义如下:
typedef struct _SENSE_DATA {
char ErrorCode:4;
char Valid:4;
} SENSE_DATA, *PSENSE_DATA;
现欲将ErrorCode赋为03h,如何进行?多谢!
问题点数:20、回复次数:14Top
1 楼hanyixin(怡)回复于 2003-12-01 14:03:56 得分 0
直接赋值就可以了:
SENSE_DATA sd;
sd.ErrorCode = 3;
Top
2 楼windew(冬露)回复于 2003-12-01 14:11:21 得分 0
那如果结构体是这样定义的呢:
typedef struct _SENSE_DATA {
char ErrorCode:7;
char Valid:1;
} SENSE_DATA, *PSENSE_DATA;
如何给这两个成员同时赋值呢?Top
3 楼dsao(神农)回复于 2003-12-01 14:15:16 得分 0
按位操作不就行了,关键是细心一点。Top
4 楼windew(冬露)回复于 2003-12-01 14:17:32 得分 0
请说出详细步骤!Top
5 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2003-12-01 14:28:24 得分 3
SENSE_DATA a;
1.memset(&a, val, 1);
2. a = val; (跟编译器有关)Top
6 楼windew(冬露)回复于 2003-12-01 14:32:01 得分 0
hanyixin的做法会使Valid中的值丢失。
老猫的做法,我没有看明白,val是什么?
Top
7 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2003-12-01 14:35:51 得分 0
你要赋的值Top
8 楼021850524(吸血鬼牌卫生巾)回复于 2003-12-01 14:37:24 得分 0
那算出这个字节的值后,把它给任意一个成员变量赋值.Top
9 楼windew(冬露)回复于 2003-12-01 14:40:14 得分 0
那如何接着对Valid进行赋值呢?Top
10 楼hanyixin(怡)回复于 2003-12-01 15:10:00 得分 0
“使Valid中的值丢失”是什么意思呢?
Top
11 楼021850524(吸血鬼牌卫生巾)回复于 2003-12-01 15:28:42 得分 2
我在vc下试了,没什么问题呀,只要在赋值的时候注意不要超过位域的长度,成员变量的值就没问题.即使超出了,也不会影响到其它成员变量的值,只是把超出的部分给截了.Top
12 楼windew(冬露)回复于 2003-12-01 15:37:34 得分 0
难道在VC中,高字节在后?Top
13 楼hanyixin(怡)回复于 2003-12-02 08:34:18 得分 10
高字节还是低字节在前是跟机器的体系结构有关的,跟VC没有关系。
Top
14 楼dsao(神农)回复于 2003-12-02 10:33:33 得分 5
高字节和低字节的问题是由于intel的cpu使用的little endian method.
要是像mac的big endian就没这儿事了。Top




