有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位 域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:

struct 位域结构名

{ 位域列表 };

其中位域列表的形式为: 类型说明符 位域名:位域长度

例如:

struct bs

{

int a:8;

int b:2;

int c:6;

};

位域变量的说明与结构变量说明的方式相同。 可采用先定义后说明,同时定义说明或者直接说明这三种方式。例如:

struct bs

{

int a:8;

int b:2;

int c:6;

}data;

说明data为bs变量,共占两个字节。其中位域a占8位,位域b占2位,位域c占6位。对于位域的定义尚有以下几点说明:

1. 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。例如:

struct bs

{

unsigned a:4

unsigned :0 /*空域*/

unsigned b:4 /*从下一单元开始存放*/

unsigned c:4

}

在这个位域定义中,a占第一字节的4位,后4位填0表示不使用,b从第二字节开始,占用4位,c占用4位。

2. 位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的。例如:

struct k

{

int a:1

int :2 /*该2位不能使用*/

int b:3

int c:2

};

从以上分析可以看出,位域在本质上就是一种结构类型, 不过其成员是按二进位分配的。

又:

1:指针类型变量不能指定所占的位数

2. 在声明成员变量时,可以用         变量名 :bit数;

来确定结构体类型的成员变量的值所占的字位数,如果在实际应用中,该变量的值超出了在声明它时所声明的字位数,那么溢出的部分将会丢失。

例子:

#include #include

using namespace std;

struct BitVariable {

unsigned a:2;

unsigned b:3;

unsigned :0;

unsigned c:6;

} BitVariable1;

int main(int argc, char *argv[])

{

BitVariable BV1;

BV1.a=2;   //10

BV1.b=8;   //1000

BV1.c=86;  //1010110

cout<10B

cout<1000B

cout<10110B

cout<

system("PAUSE");

return EXIT_SUCCESS;

}

mysql变量赋值加冒号_C语言变量声明加冒号的用法(占位符)相关推荐

  1. c ++一行给多个变量赋值_C语言变量

    变量是程序可操作的存储区的名称. 变量其实只不过是程序可操作的存储区的名称.C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的 ...

  2. mysql存储过程给多个变量赋值_MySQL存储过程如何进行变量的定义和赋值

    昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程中变量的定义赋值操作哦. 一.变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围 ...

  3. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  4. c语言变量是如何存储,C语言变量存储

    C语言中的变量按照生存周期来区分,可以分为静态存储和动态存储. 一.静态存储 静态存储是在程序运行过程中分配固定的存储空间.静态存储区中存放了整个程序运行过程中的都存在的变量,如全局变量,因此静态存储 ...

  5. php union用法,C++_C语言、C++中的union用法总结,开始的话 已经好长时间没有 - phpStudy...

    内存对齐的问题了).而对于union来说,在谭浩强的<C语言程序设计>中这么说:union变量所占用的内存长度等于最长的成员的内存长度.很显然,这是不对的,对于union所占用的内存大小, ...

  6. 整数加扰 c语言,基于地址加扰的嵌入式系统安全防护研究

    随着嵌入式系统应用的日益广泛,其安全性保障也日益迫切,尤其是存储器中的数据和指令需要严格的安全保障.目前,对片外存储器的安全防护有Execute-Only Memory(XOM)[1].PE-ICE/ ...

  7. mysql 触发器 赋值_MYSQL的触发器中 变量赋值

    CREATETRIGGERsync_doingBEFOREINSERTONet_contentFOREACHROWBEGINSELECT@uc_id:=user_headFROMet_usersWHE ...

  8. mysql 存储过程如何声明多个变量赋值_mysql存储过程:定义变量,赋值,判断,输出...

    1.定义变量,赋值,判断,输出 DROP PROCEDURE IF EXISTS proc_first; -- 如果proc_first存在就删除 create procedure proc_firs ...

  9. c语言 字符相加_C语言中自加自减的编译原理

    自增自减规则 i++ 与 ++i 的主要区别有两个: 1. i++ 返回原来的值,++i 返回加1后的值. 2. i++ 不能作为左值,而++i 可以. 毫无疑问大家都知道第一点(不清楚的看下下面的实 ...

最新文章

  1. c文本框只能输入数字_VBA代码限制文本框的输入
  2. SpringCloud 教程 | 第二篇: 服务消费者(rest+ribbon)
  3. Py之pyquery:pyquery的简介、安装、使用方法之详细攻略
  4. explicit构造函数
  5. 如何选择String
  6. 【本质】你知道C语言编译的过程吗?
  7. 单径Rayleigh信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列、Gold序列和正交Gold序列)
  8. ios 监听一个控制器的属性_ios - kvo观察者示例(监听类的属性变化)
  9. pyCharm pyplot.show()不显示图表的解决
  10. Struts2源码学习(一)——Struts2中的XWork容器
  11. Express 常用中间件 body-parser 实现解析
  12. tsdb java_OpenTSDB 问题集锦
  13. 里氏替换原则_春辉带你了解面相对象设计第二原则(里氏替换原则)
  14. [C#][共享网络] Netsh命令实现共享,并查询连接用户
  15. 18年韩师插本c语言的题答案,插本全能题库
  16. 【bb平台刷课记】wireshark结合实例学抓包
  17. linux raid卡驱动添加到内核,如何在Linux上编译RAID卡驱动方法详解
  18. 计算机内 云盘图标,如何关闭我的电脑中百度网盘图标
  19. 计算机中冰点还原快捷键,冰点还原软件如何使用,小编教你如何使用冰点还原软件...
  20. unity案例星际迷航_《星际迷航》:自1964年以来启发人们和他们的技术

热门文章

  1. 得到节点值的两种方法
  2. 程序员的进阶课-架构师之路(15)-那些年你遇到的其他树
  3. hadoop2.x伪集群搭建全流程
  4. 用JAVA制作小游戏——推箱子(一)
  5. flannel vxlan 实现原理【转】
  6. 中本聪愿景大会(SVC):BCH最贴近中本聪白皮书
  7. 一个简单的mysql服务检测启动脚本
  8. 经典案例之MouseJack
  9. 将SpringBoot的项目打包成war文件
  10. JS原生父子页面操作