社区
C语言
帖子详情
C语言位段问题(求高手解答)
happy08god
2012-03-19 03:35:58
struct {
int a:2;
}x;
x.a = 1;
printf(" x.a = %d \n",x.a);
x.a += 1;
printf(" x.a = %d \n",x.a);
请问: 2次打印出x.a的值分别是? 对于第2个值如何理解?
...全文
201
3
打赏
收藏
C语言位段问题(求高手解答)
struct { int a:2; }x; x.a = 1; printf(" x.a = %d \n",x.a); x.a += 1; printf(" x.a = %d \n",x.a); 请问: 2次打印出x.a的值分别是? 对于第2个值如何理解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
happy08god
2012-03-19
打赏
举报
回复
[Quote=引用 2 楼 wyjxhl97 的回复:]
引用 1 楼 nice_cxf 的回复:
大概是1,-2把
有符号数最高位是符号位
++
就是1,-2。
因为a占2bit,并且因为是int a:2;
所以a = 1 01
a = -2 10
与C/C++ code
char b;
b = 128;
printf(" b = %d \n",b);
原理一样
这个结果b = -128 ……
[/Quote]
明白了,原来如此,是因为有符号数最高位是符号位 。 可以通过%x的方式打印出
内存里面的值,如对-2来说,0xfffffffe,确定是负数后,求其补码,为0x00000010 ,又由于
是负数,所以为-2。
谢谢楼上二位!! 结贴给分!!
WYJXHL97
2012-03-19
打赏
举报
回复
[Quote=引用 1 楼 nice_cxf 的回复:]
大概是1,-2把
有符号数最高位是符号位
[/Quote]
++
就是1,-2。
因为a占2bit,并且因为是int a:2;
所以a = 1 01
a = -2 10
与
char b;
b = 128;
printf(" b = %d \n",b);
原理一样
这个结果b = -128 10000000
nice_cxf
2012-03-19
打赏
举报
回复
大概是1,-2把
有符号数最高位是符号位
重生之我在异世界学编程之
C语言
:深入
位段
篇
本文聚焦
C语言
中的
位段
,介绍了
位段
的基本使用,包括声明和访问;阐述了
位段
大小计算的要点,如从右向左分配位、对齐要
求
和填充位;还给出了10道经典习题,涵盖存储计算、与对齐关系等,并对习题进行了详细
解答
,助读者理解
位段
应用。
C语言
进阶——
位段
本文详细介绍了
C语言
中的
位段
特性,包括其定义、位宽限制、使用方法以及注意事项,通过实例演示了如何在结构体中灵活控制成员位数以优化内存和提高效率。,
【
C语言
】:探索
位段
的秘密
本文详细解释了
位段
的概念,包括其内存分配原理,指出
位段
在节省空间上的优势以及跨平台
问题
。它在IP数据报中的应用示例和使用时的注意事项也得到讨论,强调了在编写可移植代码时的考虑。
C语言
什么是
位段
?其优点是什么?
本文介绍了
C语言
中
位段
的概念,它是以位为单位分配内存的结构体成员,可以节省空间,特别适用于控制信息占用少量位的情况。
位段
成员需为unsigned或int类型。,
【
C语言
】自定义类型(结构体、
位段
、枚举、联合体)
本文详细介绍了
C语言
中的自定义类型,包括结构体、
位段
、枚举和联合体等。重点讲解了结构体的声明、初始化以及内存对齐等关键概念,并探讨了
位段
的内存分配规则和跨平台
问题
。
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章