char st:2表示什么意思啊?

czyf2001 2004-08-09 09:27:24
typedef struct s1{
// int x1 ;
char x3:1 ;
char x4:3 ;
、、 int x2:3;

}tstA1 ;

tstA1 tsta1 ;

char x3:1 ;这表示什么意思啊?

在main中打印时:
printf("the size of tsta1 is %d \n" , sizeof(tsta1)) ; 结果为:1

修改后:

typedef struct s2{
int x1:2 ;
char x3:1 ;
char x4:3 ;
、、 int x2:3;

}tstA2 ;

tstA2 tsta2 ;
printf("the size of tsta2 is %d \n" , sizeof(tsta2)) ; 结果为:8

如何解释啊?
谢谢!

...全文
176 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fan1124 2004-08-09
  • 打赏
  • 举报
回复
第一次听说,谢谢谢谢,长见识
kaphoon 2004-08-09
  • 打赏
  • 举报
回复
http://www.tjac.edu.cn/teacher/jinrunzhao/C%20langue/C%B3%CC%D0%F2%C9%E8%BC%C6%B5%DA12%D5%C2.htm
wanamaker 2004-08-09
  • 打赏
  • 举报
回复
bit field位域

char x3:2; 表示 x3 占2个bits
waini12 2004-08-09
  • 打赏
  • 举报
回复
从来没见过
alongfly 2004-08-09
  • 打赏
  • 举报
回复
定义变量的时候顺便也限制存储它的长度
char x3:1 表示x3只占用一位
qhgary 2004-08-09
  • 打赏
  • 举报
回复
bit field,控制占用的位数
但是要注意结果并非就是bit field数目的叠加,编译器会考虑到数位对齐的效率问题。
而且不同的编译器可能处理的结果不一样,数据成员之间的不同顺序也会导致结果不一样。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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