C51支持C语言的所有标准数据类型,除此之外,还加入了用于专门访问80C51硬件的数据类型,如:bit、sbit、sfr和sfrl6。这些数据类型在ANSIC中是没有的。
bit:声明位变量,其值为0或1。
sbit:声明可位寻址变量中的某个位变量,其值为0或1
sfr:声明特殊功能寄存器,地址范围为:0~255。
sfr16:同上,地址范围为0~65535。
C51编译器支持表5-1列出的数据类型。除了这些变量类型外,变量能被组合到结构、联合和数组中。兼容ANSIC标准的数据类型可通过指针访问,但扩展的bit、sbit、sfr和sfrl6数据类型专用于访问80C51的特殊功能寄存器,故不能通过指针进行访问。
表5-1 C51数据类型
全站搜索
数据类型
|
位
|
字节
|
值的范围
|
char
|
8
|
1
|
-128~127
|
unsigned char
|
8
|
1
|
0~255
|
enum
|
16
|
2
|
-32768~32767
|
short
|
16
|
2
|
-32768~32767
|
unsigned short
|
16
|
2
|
0~65535
|
int
|
16
|
2
|
-32768~32767
|
unsigned int
|
16
|
2
|
0~65535
|
long
|
32
|
4
|
-2147483648~2147483647
|
unsigned long
|
32
|
4
|
0~4294967295
|
float
|
32
|
4
|
±1.175494E-38~±3.402823E+38
|
bit
|
1
|
-
|
0,1
|
sbit
|
1
|
-
|
0,1
|
sfr
|
8
|
1
|
0~255
|
sfr16
|
16
|
2
|
0~65535
|