- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言比拟汇编的好处
C语言对比汇编的好处
简单来说,C语言对汇编语言进行了抽象,具有如下优点:
更符合人类思维习惯,开发效率高、时间短。
模块化。
可移植性好。
提供数学函数并支持浮点运算。
程序可读性和可维护性强。
C语言当然也有缺点,比如实时性通常要比汇编差。在编写汇编的时候可以清楚的知道每一条指令究竟要多少个机器周期,但是在C中掌控准确的时间稍微困难一些。
C51包含ANSI C关键字的同时,也有针对51单片机扩展的一些关键字。C51的扩展关键字从某种程度上体现了C51语言与标准C语言的不同。例如可重入函数、存储模式等等都是标准C中不存在的问题。
ANSI C 关键字
auto: 自动变量
double: 双精度类型
int: 声明整型类型
struct: 声明结构体类型
break: 跳出当前循环
else: 条件语句否定分支(与 if 连用)
long: 声明长整型类型
switch :用于开关语句?
case: 开关语句分支??
enum: 声明枚举类型
register: 声明寄存器变量
typedef: 用以给数据类型取别名(当然还有其他作用)
char: 声明字符型类型
extern: 声明变量是在其他文件正声明(也可以看做是引用变量)??
return: 子程序返回语句(可以带参数,也看不带参数)??
union: 声明联合数据类型
const: 声明只读变量
float: 声明浮点型类型
short: 声明短整型类型
unsigned: 声明无符号类型类型
continue: 结束当前循环,开始下一轮循环?
for: 一种循环语句(可意会不可言传)
signed: 生命有符号类型类型
void: 声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
default: 开关语句中的“其他”分支?
goto: 无条件跳转语句????
sizeof: 计算数据类型长度??
volatile: 说明变量在程序执行中可被隐含地改变?
do: 循环语句的循环体
while: 循环语句的循环条件
static: 声明静态变量
if: 条件语句
C51扩展关键字
_at_ 为变量定义存储空间绝对地址 alien 声明与PL/M51兼容的函数 bdata 可位寻址的内部RAM bit 位类型 code ROM compact 使用外部分页RAM的存储模式 data 直接寻址的内部RAM idata 间接寻址的内部RAM interrupt 中断服务函数 large 使用外部RAM的存储模式 pdata 分页寻址的外部RAM _priority_ RTX51的任务优先级 reentrant 可重入函数 sbit 声明可位寻址的特殊功能位 sfr 8位的特殊功能寄存器 sfr16 16位的特殊功能寄存器 small 内部RAM的存储模式 _task_ 实时任务函数 using 选择工作寄存器组 xdata 外部RAM C51的运算符与C语言几乎无异(至今没有发现区别)。
算术运算符
+ 加,?一元取正? - 减,?一元取负? * 乘? / 除 % 取模? -- 自减1? ++ 自加1 逻辑运算符
逻辑与 || 逻辑或 ! 逻辑非 关系运算符
大于 = 大于等于 小于 = 小于等于 == 等于 != 不等于? 位运算符号
按位与 | 按位或 ^ 按位异或 - 按位取反 右移 左移 复合运算符
算术运算符与位运算符可以组成符合运算符,例如:+=、-=等等。
其它运算符
? expr1? expr2:expr3 sizeof 计算字节数 * 指针操作 求址 [] 下表运算符 - 成员访问运算符 . 成员访问运算符 运算符在C51中与标准的C语言并没有什么差异,但是变量却有一些比较关键的区别。
变量的数据类型
基本变量类型
与标准C语言,C51的基本数据类型有char、int、short、long和float。除float外均可以使用signed和unsigned指定有符号型和无符号型,默认情况下都是signed。char占用一个字节,int和short都占2个字节,long占4个字节,float占4个字节。
其它数据类型
指针类型:指针与标准C中的指针概念相同,指向一个特定的地址(地址存放的可以是变量也可以是函数)。例如:
int func(int a, int b);
int (*pointer)(int,int) = func;
其它数据类型:enum、struct、union以及数组。
C51专有数据类型:
bit、s
文档评论(0)