6  C语言的标识符、关键字和数据类型
6.1  标识符和关键字
标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、常量、数组等。一个标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不要使用以下划线开头的标识符,而将下划线用作分段符。C51编译器规定标识符最长可达255个字符,但只有前面32个字符在编译时有效,因此在编写源程序时标识符的长度不要超过32个字符,这对于一般应用程序来说已经足够了。C语言是大小写敏感的一种高级语言,如果我们要定义一个时间“秒”标识符,可以写做“sec”,如果程序中有“SEC”,那么这两个是完全不同定义的标识符。
关键字则是编程语言保留的特殊标识符,有时又称为保留字,它们具有固定名称和含义,在C语言的程序编写中不允许标识符与关键字相同。与其他计算机语言相比,C语言的关键字较少,ANSI C标准一共规定了32个关键字,见表6-1
关键字
用途
说明
auto
存储种类说明
用以说明局部变量,缺省值为此
union是什么类型break
程序语句
退出最内层循环体
case
程序语句
switch语句中的选择项
char
数据类型说明
单字节整型数或字符型数据
const
存储类型说明
在程序执行过程中不可更改的常量值
continue
程序语句
转向下一次循环
default
程序语句
switch语句中的失败选择项
do
程序语句
构成dowhile循环结构
double
数据类型说明
双精度浮点数
else
程序语句
构成ifelse选择结构
enum
数据类型说明
枚举
extern
存储种类说明
在其他程序模块中说明了的全局变量
float
数据类型说明
单精度浮点数
for
程序语句
构成for循环结构
goto
程序语句
构成goto转移结构
if
程序语句
构成ifelse选择结构
int
数据类型说明
基本整型数
long
数据类型说明
长整型数
register
存储种类说明
使用CPU内部寄存的变量
return
程序语句
函数返回
short
数据类型说明
短整型数
signed
数据类型说明
有符号数,二进制数据的最高位为符号位
sizeof
运算符
计算表达式或数据类型的字节数
static
存储种类说明
静态变量
struct
数据类型说明
结构类型数据
switch
程序语句
构成switch选择结构
typedef
数据类型说明
重新进行数据类型定义
union
数据类型说明
联合类型数据
unsigned
数据类型说明
无符号数据
void
数据类型说明
无类型数据
volatile
数据类型说明
该变量在程序执行中可被隐含地改变
while
程序语句
构成whiledowhile循环结构
6-1  ANSI C标准一共规定了32个关键字
Keil C51编译器的关键字除了有ANSI C标准的32个关键字外还根据51单片机的特点扩展了相关的关键字。在Keil C51开发环境的文本编辑器中编写C程序,系统可以把保留字以不同颜显示,缺省颜为蓝。表6-2Keil C51编译器扩展的关键字。
关键字
用途
说明
bit
位标量声明
声明一个位标量或位类型的函数
sbit
位变量声明
声明一个可位寻址变量
sfr
特殊功能寄存器声明
声明一个特殊功能寄存器(8)
sfr16
特殊功能寄存器声明
声明一个16位的特殊功能寄存器
data
存储器类型说明
直接寻址的8051内部数据存储器
bdata
存储器类型说明
可位寻址的8051内部数据存储器
idata
存储器类型说明
间接寻址的8051内部数据存储器
pdata
存储器类型说明
“分页”寻址的8051外部数据存储器
xdata
存储器类型说明
8051外部数据存储器
code
存储器类型说明
8051程序存储器
interrupt
中断函数声明
定义一个中断函数
reetrant
再入函数声明
定义一个再入函数
using
寄存器组定义
定义8051的工作寄存器组
6-2  Keil C51编译器扩展的关键字
6.2  51 MCU DEMO试验板上实现:使右侧4LED数码管从左至右显示“1234
6.2.1  实现方法
1步:向P0口送“4”的字形码,向P2口送数0xfe以点亮个位数码管,延时2mS维持数码管点亮状态;第2步:向P0口送“3”的字形码,向P2口送数0xfd以点亮十位数码管,延时2mS维持数码管点亮状态;第3步:向P0口送“2”的字形码,向P2口送数0xfb以点亮百位数码管,延时2mS维持数码管点亮状态;第4步:向P0口送“1”的字形码,向P2口送数0xf7以点亮千位数码管,延时2mS维持数码管点亮状态。重复执行以上第1~4步,即可在数码管上得到稳定清晰的显示。
6.2.2  源程序文件
D盘建立一个文件目录(CS6-1),然后建立CS6-1.uv2的工程项目,最后建立源程序文件(CS6-1.c)。输入下面的程序: