当前位置:网站首页>位段-C语言
位段-C语言
2022-08-04 05:31:00 【crazy__xieyi】
位段是可以用来节省空间的
位段的声明和结构是类似的,有两个不同:
1.位段的成员必须是int、unsigned int 或signed int 。
2.位段的成员名后边有一个冒号和一个数字。
比如:
struct A
{
int _a:2;
int _b:5;
int _c:10;
int _d:30;
};
1.位段的内存分配
1. 位段的成员可以是int unsigned int signed int 或者是char (属于整形家族)类型
2. 位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的。
3. 位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。
struct S
{
char a:3;
char b:4;
char c:5;
char d:4;
};
struct S s = {0};
s.a = 10;
s.b = 12;
s.c = 3;
s.d = 4;
空间是如何被开辟的呢?
2.位段的跨平台问题
1. int 位段被当成有符号数还是无符号数是不确定的。
2. 位段中最大位的数目不能确定。(16位机器最大16,32位机器最大32,写成27,在16位机
器会出问题。
3. 位段中的成员在内存中从左向右分配,还是从右向左分配标准尚未定义。
4. 当一个结构包含两个位段,第二个位段成员比较大,无法容纳于第一个位段剩余的位时,是
舍弃剩余的位还是利用,这是不确定的。
总之,跟结构相比,位段可以达到同样的效果,虽然可以很好的节省空间,但是有跨平台的问题存在。
边栏推荐
猜你喜欢
随机推荐
Copy攻城狮的年度之“战”|回顾2020
[English learning][sentence] good sentence
ideal life
Deep Learning Theory - Initialization, Parameter Adjustment
如何用Pygame制作简单的贪吃蛇游戏
深度学习,“粮草”先行--浅谈数据集获取之道
关于DG(域泛化)领域的PCL方法的代码实例
[日常办公][shell]常用代码段
浅谈游戏音效测试点
How to grow into a senior engineer?
深度确定性策略梯度(DDPG)
Tencent and NetEase have taken action one after another. What is the metaverse that is so popular that it is out of the circle?
安装Apache服务时出现的几个问题, AH00369,AH00526,AH00072....
file permission management ugo
基于asp.net的法律援助平台的设计与实现(附项目链接)
[CV-Learning] Linear Classifier (SVM Basics)
【五一专属】阿里云ECS大测评#五一专属|向所有热爱分享的“技术劳动者”致敬#
Cut the hit pro subtitles export of essays
SQL注入详解
LeetCode_Dec_1st_Week