当前位置: 首页 > news >正文

赣州企业网站建设o2o商超网站建设

赣州企业网站建设,o2o商超网站建设,网站开发英文参考文献,家纺网站模板目录 1.什么是位段#xff1f; 别急#xff01;在下面第二点我和大家介绍。 2.位段的内存怎么分配#xff1f; 还有一种情况就是两种类型夹杂在一起的位段 3.位段的跨平台问题 4.位段能干嘛#xff1f;#xff08;应用#xff09; 5.位段的注意事项 1.什么是位段 别急在下面第二点我和大家介绍。 2.位段的内存怎么分配 还有一种情况就是两种类型夹杂在一起的位段  3.位段的跨平台问题 4.位段能干嘛应用 5.位段的注意事项 1.什么是位段 1. 位段的成员必须是 int 、 unsigned int 或 signed int 在C99中位段成员的类型也可以 选择其他类型。 2. 位段的成员名后边有⼀个冒号和⼀个数字。例如如下 struct A {int _a : 2;int _b : 5;int _c : 10;int _d : 30; }; int main() {printf(%d\n, sizeof(struct A));return 0; } 打印出来为8说明这里有8个字节上面有4个int 不应该是12个字节吗 别急在下面第二点我和大家介绍。 2.位段的内存怎么分配 1. 位段的成员可以是 int unsigned int signed int 或者是 char 等类型 2. 位段的空间上是按照需要以4个字节 int 或者1个字节 char 的⽅式来开辟的。 3. 位段涉及很多不确定因素位段是不跨平台的注重可移植的程序应该避免使⽤位段。 struct A {int _a : 2;int _b : 5;int _c : 10;int _d : 30; }; int main() {printf(%d\n, sizeof(struct A));return 0; } 还是这串代码首先冒号后面的数字其实规定的是这个int 变量能占到的二进制位。 一个int 有 4个字节 32个二进制位比特位。后面的数字相当于位宽占的二进制位 位段相当于本来一个 int 4个字节但比如_a 你给了它两个比特位那么它就只有两个比特位 位段开辟的空间是根据你的类型开辟的一个int 4个字节那就直接开辟4个字节的空间 但不同的是 如果你的一个变量位宽不能等于这个类型的二进制位int有32个大小时那后面的变量会根据位宽 与前面 的变量紧紧的存储到一起就像a b c 三个变量其实占了 2510个二进制位他们加起来其实是存在了一个2个字节中。但如果加上d 30 就大于了32.这样是存不下的所以得在开辟4个字节的空间所以 最终打印出来为448个字节。中间的2个字节其实是浪费了。下面有个例子可以好好看我也会给出讲解 同时记住结构体的大小为最大对齐数的整数倍 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; a 的 二进制 0001010  b 的 二进制 0001100  c 的 二进制 0000011  d 的 二进制 0000100 然后根据他们的位段的位宽进行截断 a 截3位b 4位 c 5位 d 4位。 十六进制的 1位 等于 二进制的4位。最后算出内存中存储的是十六进制的 62 03 04. 还有一种情况就是两种类型夹杂在一起的位段  struct S {char a : 3;int b : 4;char c : 4;char d : 4; }; 如果位段中间出现不同类型的位段其实会强制终止前一个位段的内容。 即第一个变量 a 开辟了 1个字节 后续的5个二进制位就不要了重新开辟4个空间给 int b变量。b变量只用了4个二进制位后续的二进制位也不在被占用而是直接跳过后面的所有二进制位给 char c 变量开辟新的 一个字节空间。因为 c d 8所以它们公用一个字节。 3.位段的跨平台问题 1. int 位段被当成有符号数还是⽆符号数是不确定的。 2. 位段中最⼤位的数⽬不能确定。16位机器最⼤1632位机器最⼤32写成27在16位机器会 出问题。 3. 位段中的成员在内存中从左向右分配还是从右向左分配标准尚未定义。 4. 当⼀个结构包含两个位段第⼆个位段成员⽐较⼤⽆法容纳于第⼀个位段剩余的位时是舍弃剩余的位还是利⽤这是不确定的 总结 跟结构相⽐位段可以达到同样的效果并且可以很好的节省空间但是有跨平台的问题存在。 4.位段能干嘛应用 下图是⽹络协议中IP数据报的格式我们可以看到其中很多的属性只需要⼏个bit位就能描述这⾥ 使⽤位段能够实现想要的效果也节省了空间这样⽹络传输的数据报⼤⼩也会较⼩⼀些对⽹络 的畅通是有帮助的。 5.位段的注意事项 因为位段他的部分不是一个一个字节存放所以位段存放的数据不能用字节的方法来更改。  所以不能对位段的成员使⽤操作符这样就不能使⽤scanf直接给位段的成员输⼊值只能是先输⼊ 放在⼀个变量中然后赋值给位段的成员。 不能直接更改位段变量的数据只能间接更改 struct A {int _a : 2;int _b : 5;int _c : 10;int _d : 30; }; int main() {struct A sa { 0 };scanf(%d, sa._b);//这是错误的//正确的⽰范int b 0;scanf(%d, b);sa._b b;return 0; }
http://www.w-s-a.com/news/774184/

相关文章:

  • 建网站需要什么wordpress误删的后果
  • wordpress无插件实现网站地图做阿里巴巴网站店铺装修费用
  • 英文互动网站建设南宁住房和城乡建设局网站
  • 威海微网站建设乐清建网站哪家强
  • 网站和app的开发成本saas系统开发教程
  • ps切片工具做网站大气简洁网站
  • 网至普的营销型网站建设wordpress邮箱验证插件下载
  • 找权重高的网站方法张家港早晨网站建设
  • WordPress数据库添加管理员关键词优化举例
  • 河南国基建设集团--官方网站wordpress qode
  • 做农村电子商务的网站有哪些内容静态网站模板古典
  • 导航网站设计方案个人网站推广方法
  • 网站排名易下拉教程防wordpress花园
  • 计算机网站建设 是什么意思现在网站建站的主流语言是什么
  • php网站跟随导航西安百姓网免费发布信息网
  • 濮阳做公司网站html5 特效网站
  • ppt设计器怎么打开深圳seo网络推广营销
  • 建设银行网站用360浏览器建设信用卡中心网站
  • 创建公司网站 教程广州建设局
  • 详述网站建设的过程简答题ui培训设计怎么样
  • 动易网站官网ppt主题大全素材
  • 怎样用eclipse做网站可以做宣传图的网站
  • 哪里可以做游戏视频网站做网站平台应该注意哪些
  • 网站后期推广是谁来做网页制作步骤作答题
  • 全屋装修设计定制整装成都网站优化多少钱
  • html5购物网站模板一个网站两个数据库
  • 个人网站怎么做微信支付网站建设项目介绍
  • 建网站合同网站适配移动端和PC端
  • 网站建设培训机构哪里好html5开发wap网站
  • 免费自助建站源码学而思网校官网