我们在单片机开发当中,基本上用C语言编程,会常用到各种变量。
其实对于我个人而言,unsigned char ,unsigned int,unsigned long,float,struct结构体,指针变量,这几类变量在我的单片机项目中比较常用,有时候会结合一维数组/二维数组使用。
在绝大部分的单片机开发过程中
unsigned char 是一个字节,范围0~255,
unsigned int 是2个字节,范围是0~65535
unsigned long是四个字节,范围是0~(2的32次幂-1)
但在少数的单片机开发环境当中,就不太一样。比如前四五年前,我有使用合泰的单片机。
unsigned char和unsigned int 都是是一个字节,范围0~255,
unsigned long 是2个字节,范围是0~65535
而结构体的位宽,则与变量成员的多少和类型有关系,有包含的所有变量的位宽相加得到结构体的位宽。
同样的,结构体指针,指针地址,则与单片机的存储位宽有关系,如果是32位单片机,则是四个字节。
在C语言当中,变量还与等关键词组合使用
常常看到很多工程中,在定义变量的时候,会经常与typedef 与各类变量类型进行组合使用,这样做的目的,主要是
1为了简化变量定义,
2避免移植时平台的差异而编译不过的情况。
与static关键词组合使用时,此处static ,是静态变量,我喜欢在函数当中使用,代表这个变量在这个函数当中运行,变量不丢失。
与const关键词组合使用时,则代表这是一个常量,是固定的数据,需要赋初值。
各类变量字节的宽度,与芯片的平台有很大的关系, 不同的平台,位宽会存在差异。
在编程时,需要明确变量范围,以便在定义变量的时候,选择合适的变量类型。否则会造成溢出的情况,程序运行达不到程序逻辑正常的效果。
C语言的运用灵活多变,一定要掌握基础知识,熟练使用,才能写出优美高效的代码。