C51的数据类型分为基本数据类型和组合数据类型,情况与标准C中的数据类型基本相同,但其中char型与short型相同,float型与double型相同,另外,C51中还有专门针对于51单片机的特殊功能寄存器型和位类型。
一.字符型char
有signed char和unsigned char之分,默认为signed char。它们的长度均为一个字节,用于存放一个单字节的数据。
对于signed char,它用于定义带符号字节数据,其字节的最高位为符号位,“0”表示正数,“1”表示负数,补码表示,所能表示的数值范围是-128~+127;
对于unsigned char,它用于定义无符号字节数据或字符,可以存放一个字节的无符号数,其取值范围为0~255。unsigned char可以用来存放无符号数,也可以存放西文字符,一个西文字符占一个字节,在计算机内部用ASCII码存放。
二.int整型
分singed int和unsigned int。默认为signed int。它们的长度均为两个字节,用于存放一个双字节数据。对于signed int,用于存放两字节带符号数,补码表示,数的范畴为-32768~+32767。对于unsigned int,用于存放两字节无符号数,数的范围为0~65535。
三.long长整型
分singed long和unsigned long。默认为signed long。它们的长度均为四个字节,用于存放一个四字节数据。对于signed long,用于存放四字节带符号数,补码表示,数的范畴为-2147483648~+2147483647。对于unsigned long,用于存放四字节无符号数,数的范围为0~4294967295。
四.float浮点型
float型数据的长度为四个字节,格式符合IEEE-754标准的单精度浮点型数据,包含指数和尾数两部分,最高位为符号位,“1”表示负数,“0”表示正数,其次的8位为阶码,最后的23位为尾数的有效数位,由于尾数的整数部分隐含为“1”,所以尾数的精度为24位。
五.* 指针型
指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量要占用一定的内存单元,对不同的处理器其长度不一样,在C51中它的长度一般为1~3个字节。
六.特殊功能寄存器型
这是C51扩充的数据类型,用于访问51单片机中的特殊功能寄存器数据,它分sfr和sfr16两种类型。其中:
sfr为字节型特殊功能寄存器类型,占一个内存单元,利用它可以访问51内部的所有特殊功能寄存器;
sfr16为双字节型特殊功能寄存器类型,占用两个字节单元,利用它可以访问51内部的所有两个字节的特殊功能寄存器。
在C51中对特殊功能寄存器的访问必须先用sfr或sfr16进行