ansic 语法元素简明手册.docx
- 文档编号:2852903
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:23
- 大小:36.27KB
ansic 语法元素简明手册.docx
《ansic 语法元素简明手册.docx》由会员分享,可在线阅读,更多相关《ansic 语法元素简明手册.docx(23页珍藏版)》请在冰豆网上搜索。
ansic语法元素简明手册
ansic(c90)
语法元素简明手册
目录
序言:
mcuc和ansic......1
关键字.....................1
运算符.....................2
分类
优先级
基本数据类型...............2
基本数据类型
数据类型限定词
基本数据类型转换
结构型数据类型............3
数组
指针
结构
联合
枚举
流程控制语句...............4
复合语句
分枝语句
循环语句
转向语句
函数.......................5
头文件.....................5
附录预处理命令和预定义宏..5
库函数.....................6
字符处理函数
地区化处理函数
数学函数
全局跳转函数
信号处理函数
可变参数处理宏
输入输出函数
实用工具函数
字符串处理函数
日期和时间函数
c51和picc的特点..........10
C语言发展简史...............11
序言:
mcuc和ansic
美国国家标准ansic,是目前通行的c语言国际标准,现在流行的mcuc无一不遵循ansic,其基本语法元素,包括:
关键字,运算符,基本数据类型,结构型数据类型,流程控制语句,函数,头文件,库函数等,都是与ansic一致的,这是mcuc的共性。
每一种mcuc相对于ansic都有所扩展和变通,形成了这种mcuc的特点。
这些特点首先与具体的mcu的组织结构,指令系统,存储器的地址编排方式密切相关。
而在表现形式上,应该主要出于软件设计者的偏好与灵感。
mcuc的特点各各迥异,主要包括3个方面的扩展:
①中断函数标识方法。
②外围模块寄存器读写方法。
③嵌入汇编语言语句和调用汇编语言函数。
1个方面的变通:
与mcu结构相关的头文件,“标准头文件”的数量和内容,“标准库函数”的数量。
除此之外,可能还会有一些个别的零散的特点,应该在使用中逐个地加以识别。
综合以上分析,遵循ansic的mcuc的语法体系,应由两部分组成:
一部分是作为共性的ansic语法元素,一部分是这种mcuc特有的语法元素。
因为我们对ansic语法元素已经熟悉,所以,在使用一种新的mcuc的时候,只要注意了解它的语法特点,就可以收到事半功倍的效果了。
使用任何一种mcuc,都应对相应的mcu的组织结构,指令系统,外围模块等,有基本的了解。
在这个基础上,研究一下开发环境附带的样例工程,或其它样例工程,包括这些样例工程中包含的启动代码文件,与单片机对应的头文件,用户源文件等。
也可以参阅开发环境帮助目录中的“汇编语言参考”,“c语言参考”等文档。
ansic的代号为ANSX3.159-1989,通常称为c89。
国际标准化组织接受了这个标准,代号为ISO/IEC9899:
1990,通常称为c90。
中国国家标准GB/T15272-94程序设计语言C,等同采用c90。
关键字
auto声明自动变量
break跳出当前循环
case开关语句分支,与switch连用
char声明字符型变量或函数
const声明常量(或称只读变量)
continue结束当前循环,开始下一轮循环
default开关语句中的“其他”分支
dodo循环语句
double声明双精度变量或函数
elseif语句的否定分支
enum定义枚举类型
extern声明变量或函数在其他文件中声明
float声明浮点型变量或函数
forfor循环语句
goto无条件跳转语句
if条件语句
int声明整型变量或函数
long声明长整型变量或函数
register声明寄存器变量
return子程序返回语句(带参数,或不带参数)
short声明短整型变量或函数
signed声明有符号类型变量或函数
sizeof计算数据类型长度
static声明静态变量
struct定义结构类型
switch开关语句
typedef给数据类型取别名
union定义联合类型
unsigned声明无符号类型变量或函数
void函数无返回值或无参数时,声明为void(空)
volatile说明变量在程序执行中可被隐含地改变
whilewhile循环语句
***************************************************
volatile用法举例和说明:
volatileinti=10;
intj=i;
...
intk=i;
volatile告诉编译器,i在其它函数中,例如在中断服务函数中,是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中,而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中,而不是重新从i里面读,这样,如果i是一个寄存器或者一个端口,或者其它全局变量,数据就容易出错,使用volatile,就可以保证对特殊地址的稳定访问,避免出错。
运算符
分类
算术运算+-*/%(取模)++--
逻辑运算!
&&||
位逻辑运算<<>>~&|^(异或)
指针运算->.*&
关系运算<<=>>===!
=
赋值运算=+=-=*=/=%=&=^=|=<<=>>=
其它运算()(强制转换)[](下标运算)+(正)-(负)sizeof?
:
(3目运算),(逗号运算)
优先级运算符结合性
最高()[]->.自左向右
!
~++--+-*&sizeof(单目运算)自右向左
(~按位取反+正号-负号*定义指针或取内容&取地址)
*/%自左向右
+-(加减运算)自左向右
<<>>自左向右
<<=>>=自左向右
==!
=自左向右
&自左向右
^自左向右
|自左向右
&&自左向右
||自左向右
?
:
(三目运算)自右向左
=+=-=*=/=%=&=^=|=<<=>>=(赋值运算)自右向左
最低,自左向右
基本数据类型
基本数据类型
char声明字符型变量或函数
int声明整型变量或函数
float声明浮点型变量或函数
double声明双精度变量或函数//在c51,picc,c430中,double和float都是单精度数
基本数据类型限定词
short声明短整型变量或函数
long声明长整型变量或函数
signed声明有符号类型变量或函数
unsigned声明无符号类型变量或函数
const声明只读变量
register声明寄存器变量
static声明静态变量
volatile说明变量在程序执行中可被隐含地改变
基本数据类型转换
隐形转换1参与运算的两个操作数类型不同时:
字节少的类型向字节多的类型转换,有符号类型向无符号类型转换
2等号两边的数据类型不同时:
右边的数据类型向等号左边的数据类型转换
强制转换(数据类型)变量;//括号后面的“变量”的数据类型,将被强制转换为括号里面的“数据类型”。
结构型数据类型
数组
说明:
数据类型数组名[矢量长度];
数据类型数组名[行长度][列长度];
数据类型数组名[]={数据1,数据2,...};//数组赋初值
数据类型数组名[][]={{数据11,数据12,...},{数据21,数据22,...},...};//数组赋初值
指针
说明:
数据类型*指针;//普通指针
数据类型(*指针)();//函数指针,指向函数的指针
数据类型(*指针)[];//数组指针,指向数组的指针
数据类型*函数名();//指针函数,返回指针的函数
数据类型*数组名[];//指针数组,内容为指针的数组
数据类型(*数组名[])();//函数指针数组
char*指针=“字符串”;//字符串变量赋初值
赋值:
指针=指针|数组名|(数据类型*)地址|&变量;
*指针=变量|值;
运算:
变量=*指针;//取“指针”指向的单元的内容
指针=&变量;//取“变量”的地址
指针++|指针--;//“指针”指向“下一个|上一个”变量单元
指针=指针+n|指针-n;//“指针”指向“下n个|上n个”变量单元
结构
结构说明:
1struct结构名
{
成员说明语句;
}
2typedefstruct
{
成员说明语句;
}结构名;
结构的位域说明:
struct结构名
{
unsegned成员1:
位长度;
unsegned成员2:
位长度;
...;//成员为无符号数
}
结构变量说明:
1struct[结构名]
{
成员说明语句;
}结构变量;
2struct结构名结构变量;
结构成员引用:
结构变量非指针:
结构变量.成员;
结构变量是指针:
结构变量->成员;或
(*结构变量).成员;
联合
联合说明:
1union联合名
{
成员说明语句;
}
2typedefunion
{
成员说明语句;
}联合名;
联合变量说明:
1union联合名
{
成员说明语句;
}联合变量;
2union联合名联合变量;
联合成员引用:
联合变量非指针:
联合变量.成员;
联合变量是指针:
联合变量->成员;或
(*联合变量).成员;
枚举
枚举说明:
enum枚举名
{
元素1,元素2,...,元素n
};
枚举变量说明:
1enum枚举名
{
元素1,元素2,...,元素n
}枚举变量;
2enum枚举名枚举变量;
枚举变量用法:
枚举变量=枚举值;
流程控制语句
(1)复合语句
{
语句1;
语句2;
...;//多个语句
}
(2)分枝语句
①if(条件)
语句;
②if(条件)
语句;
else
语句;
③if(条件0)
语句;
elseif(条件1)
语句;
elseif(条件2)
语句;
...;//多个elseif语句
else
语句;
④switch(表达式)
{
case常量1:
语句;break;
case常量2:
语句:
break;
...;//多个case语句
default:
语句;
}
(3)循环语句
①for([i赋值];[循环条件];[i修改])
语句;
②while(条件)
语句;
③do
语句;
while(条件);
(4)转向语句
bre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ansic 语法元素简明手册 语法 元素 简明 手册