关于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两位,是放不下的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com