嵌入式开发中的常用数据类型
嵌入式开发主要用到的是C语言,C语言中的基本数据类型主要有数值类型和字符类型
这里我们主要就整形和字符型数据进行讲解
- char(字符型)
众所周知,在计算机中,计算机只能识别0,1字符,这里就牵扯到编码的问题,在c语言中采用ASCII编码,包括0-127共128个字符,char类型就是为了解决字符的编码而出现的,char类型的大小为1个字节,范围为-127~127,从0-127每个数值代表一个ASCII字符。
#include <stdio.h>
void main(){
printf("**************char类型测试********************\n");
char a=48;
printf("a=%d,a='%c'\n",a,a);
char b=a+1;
printf("b=%d,b='%c'\n",b,b);
char c=a+2;
printf("c=%d,c='%c'",c,c);
}
运行结果
从上面代码可以看出,char类型的变量可以和int类型的数值进行加法减法操作,当以%d的形式输出的时候就是char的值,以%c类型输出的时候就是这个char变量所表示的字符。
其实在c语言中char类型就是和int类似的整形,只不过char可以表示的范围会更小,在嵌入式开发中经常可以看到使用char类型表示一个数字进行加减法以及乘法操作。
2、short int(短整型)
3、int(整形)
4、long(长整型)
这三种基本上没什么差别,主要区别在于数据长度不一样,可以表示的数据范围不同
这三种类型的长度在不同的计算机和操作系统上时可能会有不同
5、在嵌入式开发中还会经常遇到像uint_8,uint_16,int_8,int_16,等数据类型,刚刚做嵌入式开发的同学可能会很迷惑,其实这些类型并不是新的数据,而是在c语言原有数据类型的基础上通过typedef关键字重定义的数据类型的别名。
这是 因为在不同平台和编译器上会产生类型长度的差异,而在写嵌入式C代码时,经常会遇到代码移植的问题,通过重定义数据类型可以解决这一问题。
常用宏定义数据类型
//4.重定义基本数据类型(类型别名宏定义)
typedef unsigned char uint_8; // 无符号8位数,字节
typedef unsigned short int uint_16; // 无符号16位数,字
typedef unsigned long int uint_32; // 无符号32位数,长字
typedef unsigned long long uint_64;
typedef char int_8; // 有符号8位数
typedef short int int_16; // 有符号16位数
typedef int int_32; // 有符号32位数
typedef long long int_64;
//不优化类型
typedef volatile uint_8 vuint_8; // 不优化无符号8位数,字节
typedef volatile uint_16 vuint_16; // 不优化无符号16位数,字
typedef volatile uint_32 vuint_32; // 不优化无符号32位数,长字
typedef volatile int_8 vint_8; // 不优化有符号8位数
typedef volatile int_16 vint_16; // 不优化有符号16位数
typedef volatile int_32 vint_32; // 不优化有符号32位数