枚举语法:
enum 枚举名
{
枚举常量//名字
};
eg:
enum weekdays
{
MON,
TUES,
WED,
THURS,
FRI,
SAT,
SUN//枚举常量
};
注意:
1.C语言中对于枚举类型实际上是当作整型处理的
2.提高代码可读性,
写成枚举,可以做语法检查
3.枚举常量,之间用逗号隔开
4.枚举常量,可以给初值,给了初值之后,后面的值会依次影响到
typedef //type define
//typedef是不是定义了一个新的类型?
注意:
typedef不能定义出一个新的类型,它是给已有类型起别名
用法:
int a;//定义了一个int型变量a
typedef int a;//此时表示给int型起了一个别名叫a
用途:
往往用于给复杂类型起别名
为了 可移植性 给一些类型起别名
size_t //long int
typedef long int size_t;
size_t
位运算:
主要用途,操作硬件
操作硬件的逻辑:
写程序<---->控制硬件
写程序---控制寄存器中的某些二进制位--->关联到某些硬件引脚--->电平的变化
&按位与运算 置位(0)运算,清零
运算规则: 一假则假
eg:
0x55
& 0x33
------------------
0101 0101
0011 0011 &
------------------------
0001 0001//0x11
| 按位或运算 置位(1)运算
运算规则:一真则真
eg:
0x55
0x33 |
-----------
0101 0101
0011 0011 |
------------------
0111 0111//0x77
^或运算
运算规则:
相同为0,不同为1
eg:
0x55
0x33 ^
----------
0101 0101
0011 0011
--------------
0110 0110//0x66
~取反运算
运算规则:真假相对
<< 左移运算
eg:
操作数1<<操作数2
操作数1表示要进行移位操作的数据
操作数2 表示要移动的位数
a<<2//表示a左移2位
int a = 1;
0000 0001//1
0000 0010//2(左移一位)
0000 0100//4(左移两位)
a<<2//左移一位相当于乘以2
//左移n位,相当于乘以2^n
>>右移运算
eg:
操作数1>>擦作数2
操作数1表示要进行移位操作的数据
操作数2表示要移动位数
eg:
unsigned char a = 0x80; //1000 0000
a>>1
1000 0000
0100 0000
算数右移
要移动的数据,本身是有符号类型,如果右移,最高位补符号位
逻辑右移
要移动的数据,本身是无符号类型,如果右移,最高位补0