基本数据类型
51单片机int是16位,32单片机int是32位
51单片机short8位,32单片机short16位
两种单片机Long的长度相同
没有unsigned 的float 和double
在stdint头文件中给一些数据类型重新起了名字,ST库是老版本,仍然支持
常用改名函数
宏定义
关键字:#define
用途:用一个字符串代替一个数字,便于理解,防止出错;
提取程序中经常出现的参数,便于快速修改
定义宏定义: #define ABC 12345
引用宏定义: int a = ABC; //等效于int a = 12345;
typedf
关键字:typedef
用途:将一个比较长的变量类型名换个名字,便于使用
定义typedef: typedef unsigned char uint8_t;
引用typedef: uint8_t a; //等效于unsigned char a;
和宏定义的区别:
(1)typedf只能改变数据变量的名字,宏定义可以定义很多
(2)宏定义的新名字在左边,typedf在右边
(3)宏定义不需要加分号,typedf需要分号
结构体
关键字:struct
用途:数据打包,不同类型变量的集合
定义结构体变量:struct{char x; int y; float z;} StructName;
因为结构体变量类型较长,所以通常用typedef更改变量类型名
引用结构体成员:(索引必须是结构体子项的名字)
StructName.x = 'A';
StructName.y = 66;
StructName.z = 1.23;
或 pStructName->x = 'A'; //pStructName为结构体的地址
pStructName->y = 66;
pStructName->z = 1.23;
使用printf函数输出int 需要%d,char函数需要%c,float函数需要%f
结构体改名:
typedf struct{
int a;
float b;
char c;
} StructName;//结构体被重命名为StructName
StructName x;//用结构体声明变量
枚举类型
关键字:enum
用途:定义一个取值受限制的整型变量,用于限制变量取值范围;宏定义的集合
定义枚举变量: enum{FALSE = 0, TRUE = 1} EnumName;
因为枚举变量类型较长,所以通常用typedef更改变量类型名
引用枚举成员: EnumName = FALSE; EnumName = TRUE;
枚举类型改名
typedf enum{
Monday=1,//逗号
Tuesday=2,//还有宏定义的功能,定义完了不一定要赋值给枚举变量中的值,当宏定义用也可以
Wednesday=3,
Thursday//如果是按顺序的,那么系统会自动赋值
} Week_t;//这个数据类型是Week_t
Week_t week;//声明一个week变量
week=Monday;//等效于week=1;