第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 | 程序语句 | 构成do…while循环结构 |
double | 数据类型说明 | 双精度浮点数 |
else | 程序语句 | 构成if…else选择结构 |
enum | 数据类型说明 | 枚举 |
extern | 存储种类说明 | 在其他程序模块中说明了的全局变量 |
float | 数据类型说明 | 单精度浮点数 |
for | 程序语句 | 构成for循环结构 |
goto | 程序语句 | 构成goto转移结构 |
if | 程序语句 | 构成if…else选择结构 |
int | 数据类型说明 | 基本整型数 |
long | 数据类型说明 | 长整型数 |
register | 存储种类说明 | 使用CPU内部寄存的变量 |
return | 程序语句 | 函数返回 |
short | 数据类型说明 | 短整型数 |
signed | 数据类型说明 | 有符号数,二进制数据的最高位为符号位 |
sizeof | 运算符 | 计算表达式或数据类型的字节数 |
static | 存储种类说明 | 静态变量 |
struct | 数据类型说明 | 结构类型数据 |
switch | 程序语句 | 构成switch选择结构 |
typedef | 数据类型说明 | 重新进行数据类型定义 |
union | 数据类型说明 | 联合类型数据 |
unsigned | 数据类型说明 | 无符号数据 |
void | 数据类型说明 | 无类型数据 |
volatile | 数据类型说明 | 该变量在程序执行中可被隐含地改变 |
while | 程序语句 | 构成while和do…while循环结构 |
表6-1 ANSI C标准一共规定了32个关键字
Keil C51编译器的关键字除了有ANSI C标准的32个关键字外还根据51单片机的特点扩展了相关的关键字。在Keil C51开发环境的文本编辑器中编写C程序,系统可以把保留字以不同颜显示,缺省颜为蓝。表6-2为Keil 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试验板上实现:使右侧4个LED数码管从左至右显示“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)。输入下面的程序:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论