C语言符号、指令表
编译指令
注解://—单行注解;/*多行注解*/ 基本数据类型(i n t,f l o a t,d o u b l e,c h a r,v o i d)
用户自定义数据类型格式
typedef struct{
数据类型变量序列1;
数据类型变量序列1;
...
}自定义数据类型的名称;
保留字
d e f a u l t,d o,d o u b l e,f a r,e l s e,e n u m,e x t e r n,f l o a t,f o r,g o t o,i f,f u n c u s e d,i d a t a,i n t,
i n l i n e,i n t e r r u p t,l a r g e,l o n g,p d a t a,_p r i o r i t y_,r e e n t r a n t,r e t u r n,s b i t,s f r,s f r16,
s h o r t,s i g e n d,s i z e o f,s m a l l,s t a t i c,s t r u c t,s w i t c h c_t a s k_,t y p e d e f,u s i n g,u n i o n,
u n s i g n e d,v o i d,v o l a t i l e,w h i l e,x d a t a
常量表示法
-----------------------------------------------------运算符----------------------------------------------------- 算术运算
比较运算
※比较运算结果是个布尔值既T R U E(真值)或FA L S E(假值)。假设a等于8
逻辑运算
※逻辑运算结果是个布尔值既T R U E(真值)或FA L S E(假值)。假设a等于8
位逻辑运算
※假设a等于5
----------------------------------------------------控制命令--------------------------------------------------- i f语句
i f(条件)语句1;
e l s e语句2;
例:if(d==4) d=0; //如果d等于4就设置d等于0
else d++; //否则就将d加1
if(ticks==0) { //如果ticks等于0
ticks=1000; //ticks 设置成1000
counter[0]++; //counter[0]加1
}
嵌套i f语句
例:if(counter[0]==10) {
counter[1]++;
counter[0]=0;
if(counter[1]==10) {
counter[2]++;
counter[1]=0;
}
}
s w i t c h(变量){
c a s e常量1:语句1;b r e a k;
c a s e常量2:语句2;b r e a k;
c a s e常量3:语句3;b r e a k;
......
d e f a u l t;语句n;
}
f o r循环
f o r(初值,条件,变化值)语句;
例:for(i=0;i<10;i++) x=x+i;
for(i=1;i<10,i++)
for(j=1;j<10,j++)
printf(“%d %d”,i,j);
无穷循环:
for( ; ; );
w h i l e循环
w h i l e(条件)语句;
例:while (ch!=!’A’) ch=getche();
无穷循环:
while(1);
d o/w h i l e循环
d o{
语句;
...
}w h i l e(条件);
例:do {
ch=getche();
} while (ch!=”A”);
loop1:
x++;
if(x<100) goto loop1;
----------------------------------------------------指针和函数------------------------------------------------
指针的定义
数据类型*指针变量的名字;
例:char *p;
int *x;
指针与数组
例:char filename[80];
char *p;
p=filename; //指针p存放filename的开始地址
int x[5]={1,2,3,4,5};
int *p,sum,i;
p=x; //指针p存放数组x的开始地址
for(i=0;i<5;i++)
sum=sum+p[i]; //p[i]相当于x[i]
指针的运算
1.针变量前面加上*号就是取得指针所指向位置的内
容。
例:int x[5]={1,2,3,4,5};
int *p;
p=x; //指针p存放数组x的开始地址
*p=10; //相当于设置x[0]等于10
2.变量前面加上&符号,可以取得一个变量的位置。
例:int x,y;
int *p;
p=&x; //指针p存放x的地址,相当于p是指向x 的指针
*p=1; //相当于设置x等于1
3.&符号也可以加在数组的前面
例:int x[5];
int *p;
p=&x[2]; //指针p存放x[2]的地址,相当于p是指向x[2]的指针
*p=50; //相当于设置x[2]等于50
函数
函数类型函数名称(参数序列);
参数说明
{
函数的主体
}
例:void delay (void) { //不返回任何数据的函数unsigned char i,j; //没有任何参数的函数for(i=0,i<255,i++)
for(j=0,j<255,j++);
}
main()
{
...
delay(); //调用函数
}
例:unsigned char sum(unsigned chat a,unsigned chat b)
{
unsigned chat x;
check_GLCD_busyflag(); //函数中可以调用另一个函数
x=a+b;
return x; //return会返回x的数据
}
中断服务函数
void 中断服务程序的名称(void) interrupt 中断号码using 寄存器组号码
{
中断服务子程序主体
}
中断号码
#define IE0_VECTOR 0 //0x03
#define TF0_VECTOR 1 //0x0B
#define IE1_VECTOR 2 //0x13
#define TF1_VECTOR 3 //0x1B
#define SIO_VECTOR 4 //0x23
对于S51有定时器2
#define TF2_VECTOR 5 //0x2B
例:static void xint0_isr(void) interrupt IE0_VECTOR(或0)using 1
{
unsigned char i,j=0xFF;
for(i=0,i<16,i++)
{
j++;
P1=j; //将数值输出到P1口
delay_4isr();
}
}
-----------------------------------------------------汇编语言-------------------------------------------------- 在C中加入汇编语言
例:void delay100us()
{
#pragma asm
mov r7,#1
more: mov r3,#48
djnz r3,$
djnz r7,more
#pragma endasm
}
----------------------------------------------------宏(macro)----------------------------------------------
宏的定义
%*d e f i n e(m a c r o名称)(m a c r o的指令)
例:%*define (write_1) (
setb DI
serb SK
clr SK
)
#d e f i n e宏的名称宏的指令
例:#define uchar unsigned char
() 圆括号
[] 下标运算符
-> 指向结构体成员运算符
. 结构体成员运算符
2级优先级右结合
! 逻辑非运算符
~ 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址与运算符
sizeof 长度运算符
3级优先级左结合
* 乘法运算符
/ 除法运算符
% 取余运算符
4级优先级左结合
+ 加法运算符
- 减法运算符
5级优先级左结合
<< 左移运算符
>> 右移运算符
6级优先级左结合
<、<=、>、>= 关系运算符7级优先级左结合
== 等于运算符
!= 不等于运算符
& 按位与运算符
9级优先级左结合
^ 按位异或运算符
10级优先级左结合
| 按位或运算符
11级优先级左结合
&& 逻辑与运算符
12级优先级左结合
|| 逻辑或运算符
13级优先级右结合
? : 条件运算符
14级优先级右结合
=+ =- =*
=/ =% =
>= < <=
&= ^= |= 全为赋值运算符15级优先级左结合
,逗号运算符