关于C语言里的位域赋值问题
发布网友
发布时间:2022-04-24 01:50
我来回答
共3个回答
热心网友
时间:2023-10-19 22:21
c在结构提中定义位,是无符号整型,unsigned int。你定义成int那么默认为有符号整型了。
虽然可以定义成int类型,但是一般没人这样去做。因为有更好的方法去这样做。
你的应该改成
typedef struct _ss_
{
unsigned int a:2;
unsigned int b:2;
unsigned int c:2;
unsigned int d:1;
}ss;
ss ff;
int uu
ff.a=1;
ff.b=2;
ff.c=3;
ff.d=4;
uu = ff.a;
uu = ff.b;
uu = ff.c;
uu = ff.d;
热心网友
时间:2023-10-19 22:22
b,c,d,都是内存空间不足而造成溢出现象,只要给够内存空间,输出就会是正确的。oxffff...是十六进制的数,而出现的原因则是溢出!符号位出现错误
热心网友
时间:2023-10-19 22:22
0xfffffffe哪来的那么多f,你用什么看结果的?
而且3=100B,你只给了C两位,是放不下的
热心网友
时间:2023-10-19 22:22
c在结构提中定义位,是无符号整型,unsigned int。你定义成int那么默认为有符号整型了。
虽然可以定义成int类型,但是一般没人这样去做。因为有更好的方法去这样做。
你的应该改成
typedef struct _ss_
{
unsigned int a:2;
unsigned int b:2;
unsigned int c:2;
unsigned int d:1;
}ss;
ss ff;
int uu
ff.a=1;
ff.b=2;
ff.c=3;
ff.d=4;
uu = ff.a;
uu = ff.b;
uu = ff.c;
uu = ff.d;
热心网友
时间:2023-10-19 22:22
b,c,d,都是内存空间不足而造成溢出现象,只要给够内存空间,输出就会是正确的。oxffff...是十六进制的数,而出现的原因则是溢出!符号位出现错误
热心网友
时间:2023-10-19 22:22
0xfffffffe哪来的那么多f,你用什么看结果的?
而且3=100B,你只给了C两位,是放不下的