当前位置:网站首页>位段-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. 当一个结构包含两个位段,第二个位段成员比较大,无法容纳于第一个位段剩余的位时,是
舍弃剩余的位还是利用,这是不确定的。
总之,跟结构相比,位段可以达到同样的效果,虽然可以很好的节省空间,但是有跨平台的问题存在。
边栏推荐
- (Navigation page) OpenStack-M version - manual construction of two nodes - with video from station B
- 双向LSTM
- [日常办公][shell]常用代码段
- yoloV5 使用——训练速度慢,加速训练
- 彻底删除MySQL教程
- 亚马逊云科技 Build On 2022 - AIot 第二季物联网专场实验心得
- 亚马逊云科技Build On-Amazon Neptune基于知识图谱的推荐模型构建心得
- Amazon Cloud Technology Build On 2022 - AIot Season 2 IoT Special Experiment Experience
- CSDN大礼包--高校圆桌派大礼包
- 强化学习中,Q-Learning与Sarsa的差别有多大?
猜你喜欢
随机推荐
打金?工作室?账号被封?游戏灰黑产离我们有多近
TensorRT 5 初步认识
文件编辑器
MNIST handwritten digit recognition - based on Mindspore to quickly build a perceptron to achieve ten categories
Copy攻城狮的年度之“战”|回顾2020
DRA821 环境搭建
Copy攻城狮5分钟在线体验 MindIR 格式模型生成
MNIST Handwritten Digit Recognition - From Perceptrons to Convolutional Neural Networks
LeetCode_Dec_3rd_Week
MNIST手写数字识别 —— ResNet-经典卷积神经网络
第二章 STA相关概念
LeetCode_Nov_5th_Week
如何成长为高级工程师?
LeetCode_Dec_1st_Week
target has libraries with conflicting names: libcrypto.a and libssl.a.
浅谈外挂常识和如何防御
Completely remove MySQL tutorial
IDEA创建Servlet步骤
Machine Learning - Processing of Text Labels for Classification Problems (Feature Engineering)
tmux concept and usage


![[Copy Siege Lion Log] Flying Pulp Academy Intensive Learning 7-Day Punch Camp-Study Notes](/img/af/05caea638de8d75f6d3b42b3d8e28f.png)






