• 全部
...

int a:3;是什么意思呢?

hackem 2008-09-06 09:34:00
struct{
int a:3;
int b:2;
int c:3;
}s;

这里的 int a:3;是什么意思呢?
struct{
int a:3;
int b:2;
int c:3;
}s;

后面}的s又是什么意思呢?
...全文
给本帖投票
4320 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
家有萌宝V 2008-09-09
  • 打赏
  • 举报
回复
mark
avalonBBS 2008-09-08
  • 打赏
  • 举报
回复
楼主还是看书吧~
yangch_nhcmo 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 Chiyer 的回复:]
C/C++ code

struct{
int a:3; // 位域 a占3位
int b:2;
int c:3;
}s; // s是上面这个struct的一个实例


[/Quote]
puzzlesky 2008-09-08
  • 打赏
  • 举报
回复
int a:3;
表示的是a是个整形数,占得空间为3个bit位
s是所定义的结构体变量
realdragon2 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 avalonBBS 的回复:]
楼主还是看书吧~
[/Quote]
mifeixq 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 hackem 的帖子:]
struct{
int a:3; //a占3 bit
int b:2;
int c:3;
}s; //这里的s是struct变量

这里的int a:3;是什么意思呢?
struct{
int a:3;
int b:2;
int c:3;
}s;

后面}的s又是什么意思呢?
[/Quote]
love_aiqiu_123 2008-09-08
  • 打赏
  • 举报
回复
int a:3;
表示的是a是个整形数,占得空间为3个bit位
s是所定义的结构体变量.
在写卡(主要是ic卡)是用过。为了节省空间。
a1234567yang 2008-09-08
  • 打赏
  • 举报
回复
a占3位
huangtianly211 2008-09-08
  • 打赏
  • 举报
回复
呵呵

xmczr 2008-09-08
  • 打赏
  • 举报
回复
struct{
int a:3;
int b:2;
int c:3;
}s;

a:3代表位域,表示3位,3个bit
s是结构体声明是的可选部分,是结构体的一个实例。
Evenque 2008-09-08
  • 打赏
  • 举报
回复
呵呵
好多书上现在都不写这个玩意了
mikelu2008 2008-09-07
  • 打赏
  • 举报
回复
位段:
一种使变量所占的内存能够细化到1个或者多个二进制位的一种合理使用内存技术
位段是建立在结构的基础上的,又称位段结构类型。
位段定义格式:
struct name
{
type name1 : byNum1 ;
type name2 : byNum2 ;
and so on ...
};

举个实例:某个微处理器定时器控制寄存器的内容:
struct STimerControlReg
{
unsigned int not_used:6; //寄存器的10-15位为保留位,未用
unsigned int tassel:2; //寄存器的8-9位决定定时器的时钟源,有4种取值
unsigned int id:2; //寄存器的6-7位决定定时器的时钟分频系数,有1,2,4,8分频
unsigned int mc:2; //寄存器的4-5位决定定时器的工作模式,有4种模式
unsigned int not_use1:1; //寄存器的3位未用
unsigned int taclr:1; //寄存器的2位,定时器清零位
unsigned int taie:1; //寄存器的1位,定时器中断使能位
unsigned int taifg:1; //寄存器的0位,定时器中断标志位
};
StimerControlReg timer;
timer.taie = 1; //允许定时器中断
while(timer.taifg == 0); //等待定时器中断

相信这个例子够明白了吧?其位数与所需功能密切相关(上例子中两红色的对应)。

不过,位段的主要目的是节省内存,位段在硬件资源相对宝贵的嵌入式系统开发中应用广泛,如果只是简单用VC写程序,相信还是挺少会用到的。
malu_1982 2008-09-07
  • 打赏
  • 举报
回复
占几个位
blackwoodshanda 2008-09-07
  • 打赏
  • 举报
回复
那样的话是不是a表示0-7?
zhyinty 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 CSYNYK 的回复:]
struct{
int a:3; // 表示为成员a分配3个bit位,int表示成员a 最多可分配sizeof(int)*8个bit位,以下的相同。
int b:2;
int c:3;
}s;

这里的 int a:3;是什么意思呢?
struct{
int a:3;
int b:2;
int c:3;
}s; //表示自定义的位域结构体的类型

具体位域的介绍,网上很多资料可以查找
[/Quote]
e_sharp 2008-09-07
  • 打赏
  • 举报
回复
位域
foochow 2008-09-07
  • 打赏
  • 举报
回复
位域。。
单体实例s
SUX4J 2008-09-07
  • 打赏
  • 举报
回复
是占三个比特位,在前面那个INT中的
  • 打赏
  • 举报
回复
int a:3; 表示的是a占用3个bit的长度 ,是位域的定义方法
s代表这个结构的名称
lockhall 2008-09-07
  • 打赏
  • 举报
回复
不过,位段的主要目的是节省内存,位段在硬件资源相对宝贵的嵌入式系统开发中应用广泛,如果只是简单用VC写程序,相信还是挺少会用到的。

===============

对协议的编写还是要位域的,因为很多协议字段都是位来计算的 :)
加载更多回复(29)

70,006

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部