几个单片机常用的C语言数据类型

字符的位数代表的是可以用几个二进制的数字表示

char

char是有符号字符型,占8位。所以可以表示-128-127的数字
unsigned char 为无符号字符型,可以表示0-255

short

16位
short -32768-32767
unsigned short 0-65535

int

32位
unsigned int
int
在51单片机中的int是16位不是32位

long

32位
unsigned long

long long

64位
unsigned long long

double与float

都是C语言中用来存储小数的
float为32位
double为64位

typedef

用于将一个比较长的变量名字换个名字用,这样比较方便

区别宏定义
#define ABC 12345
是将12345赋予了ABC的名字
int a =ABC 相当于12345赋予了a

而typedef的后面是需要加分号的
定义typedef
typedef unsigned char uint8_t;
是等于将unsigned char的名字替换成了uint8_t
这里的重命名是添加了一个新名字,原名字还是可以用的

struct

区分数组,数组打包的是同一类型变量的数据,而struct是可以打包一个存在不同变量的数据。例如在stm32引脚的结构体参数中,存放有引脚,频率,模式三个不同类型的变量。

定义struct

struct{char x;int y;float z;} c;

这里的意思是我们使用一个结构体将xyz三个不同类型的变量打包处理,这个结构体交做“c”

引用struct

c.x = 'a';
c.y = 6;
c.z = 1.2;
//第一种方法
pc->x = 'a';
pc->y = 6;
pc->z = 1.2;
//这里使用指针的方式,通过将c结构体的地址赋值

这便是先定义后引用结构体
此处写结构体比较多是因为自己在之前的C语言学习中对此知识点总是掌握不牢

这个时候typedef的作用便显现出来了
当我们用struct{char x;int y;float z;} c;去定义结构体的时候,可能会用到很多这样的定义,但是这个结构体我们固定了就是xyz这三种搭配的类型,我们就可以用typedef去将这个结构体变量重新命名变成了

typedef struct{
	char x;
	int y;
	float z;
} StructName;
StructName canshu1;
StructName canshu2;
canshu1.x = 'a';
canshu2.x = 'b';
canshu1.y = 1;
canshu2.y = 2;
canshu1.z = 1.1;
canshu2.z = 2.2;

此后就可以直接使用一个更为简短的名字去定义这个结构体。

枚举

枚举的作用是去定义一个取值受限制的整型变量,用于限制这个变量的取值范围。从某种意义上来说可以称为宏定义的集合。

enum{false=0,true=1} door;
door = false;
door = true;

首先我们定义枚举的关键字是enum,定义了一个名字叫door的变量,它虽然是一个整型变量但是却只能够取我们给与它的两个值,0或1。

你可能感兴趣的:(C语言,STM32,单片机,嵌入式硬件,c语言)