共用体
共用体的概念
有时需要使几种不同类型的变量存放到同一段内存单元中。
结构体变量所占内存长度是各成员占的内存长度之和。
共用体变量所占的内存长度等于最长的成员的长度。
共用体引用方式
例如
共用体数据类型特点
(1)同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一种,而不是同时存放几种。
(2)共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。
(3)共用体变量的地址和它的各成员的地址都是同一地址。
(4)不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,又不能在定义共用体变量时对它初始化。
(5)不能把共用体变量作为函数参数,也不能使函数带回共用体变量,但可以使用指向共用体变量的指针(与结构体变量这种用法相仿)。
(6)共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。
枚举类型
(1)在C编译中,对枚举元素按常量处理,故称枚举常量。它们不是变量,不能对它们赋值。
(2)枚举元素作为常量,它们是有值的,C语言编译按定义时的顺序使它们的值为0,
(3)枚举值可以用来作判断比较:
(4)一个整数不能直接赋给一个枚举变量。
用typedef定义类型
用一个新的名字来代指原来的数据类型,类似绰号
位运算
按位与'&'
参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。
主要作用
(1)清零
(2)取一些数的定位
按位或运算' | '
两个相应的二进制位中只要有一个为1,该位的结果值为1。即010=0,0|1=1,110=1,1l1=1。
作用,为某些数定1
按位异或' ^ '
异或运算符∧也称XOR运算符。它的规则是:若参加运算的两个二进制位同号,则结果为0(假);异号则为1(真)。即00=0,01=1,10=1,11=0。
(1)特定位反转
(2)交换两值
取反运算符’ ~ ‘
~是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变0。例如,~025 是对八进制数25(即二进制数00010101)按位求反。
左移运算符' << '
用来将一个数的各二进制位全部左移若干位。
右移运算符' >> '
a>>2表示将a的各二进制位右移2位,移到右端的低位被舍弃,对无符号数,高位补0。例如,a=017时: