您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 位域 >

请教一个关于CC++位域问题

发布时间:2019-06-12 09:38 来源:未知 编辑:admin

  各位好。我在谭浩强C语言书中发现,对位域有这么一条注意,位域成员的类型必须指定为unsigned或int类型。但是下面代码能成功应用,让我非常费解。请帮我解释下,谢谢...

  各位好。我在谭浩强C语言书中发现,对位域有这么一条注意,位域成员的类型必须指定为unsigned或int类型。但是下面代码能成功应用,让我非常费解。请帮我解释下,谢谢

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  首先,位域类型并不限于unsigned或int,只不过它们应用比较多,因为结构体在内存中一般是按照4字节对齐的。但是也可能只需要大小不超过4字节的结构体,那么int就显得不合适了。

  楼下那位“什么int,short都是没有作用的”说的并不对,就像你举得这个例子中,如果把unsigned short都改为 unsigned int,那么最终sizeof()的结果就与原来不符

  位域变量的说明与结构变量说明的方式相同。 可采用先定义后说明,同时定义说明或者直接说明。

  一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。

  同样说的 位域成员的类型必须指定为unsigned或int类型 是相对float型和double型说的

  因为float型和double型的存储结构遵循的是IEEE的规定,而不能按位直接截取使用。

  也就是说的是,你定义成什么型,对存储空间固定长度的数据,按什么类型解释。

  也就是说,位域的类型可以指定为限定的或者非限定的 _Bool, signed int, unsigned int,或者实现定义的类型。也就是说编译器可以支持unsigned short也可以不支持。

http://lake-macquarie.com/weiyu/158.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有