1.标识符
标识符可由字母、数字和下划线组成。标识符必须以字母或下划线开头,大、小写的字母分别认为是两个不同的字符。不同的系统对标识符的字符数有不同的规定,一般允许7个字符
2.常量
- 整型常量
- 十进制常数
- 八进制常数(以0开头的数字序列)
- 十六进制常数(以0x开头的数字序列)
- 长整型常数(在数字后加字符L或l)
-
字符常量
用单撇号括起来的一个字符,可以使用转义字符 -
实型常量(浮点型常量)
- 小数形式
- 指数形式
- 字符串常量
用双撇号括起来的字符序列
3.表达式
- 算术表达式
- 整型表达式:参加运算的运算量是整型量,结果也是整型数
- 实型表达式:参加运算的运算量是实型量,运算过程中先转换成
double
型,结果为double
型
-
逻辑表达式
用逻辑运算符连接的整型量,结果为一个整数(0或1)。逻辑表达式可以认为是整型表达式的一种特殊形式 -
字位表达式
用位运算符连接的整型量,结果为整数。字位表达式也可以认为是整型表达式的一种特殊形式 -
强制类型转换表达式
用(类型)
运算符使表达式的类型进行强制转换,如(float)a
-
逗号表达式(顺序表达式)
其形式为:表达式1,表达式2,表达式3,…,表达式n
顺序求出表达式1,表达式2,…,表达式n的值,结果为表达式n的值 -
赋值表达式
将复制号=
右侧表达式的值赋给赋值号左边的变量。赋值表达式的值为执行赋值后被赋值的变量的值 -
条件表达式
其形式为:逻辑表达式?表达式1:表达式2
逻辑表达式的值若为非零,则条件表达式的值等于表达式1的值;若逻辑表达式的值为零,则条件表达式的值等于表达式2的值 -
指针表达式
对指针类型的数据进行运算,例如,p-2
,p1-p2
等(其中p
,p1
,p2
均已定义为指向数组的指针变量,p1
与p2
指向同一数组中的元素),结果为指针类型
以上各种表达式可以包含有关的运算符,也可以是不包含任何运算符的初等量(例如,常数是算术表达式的最简单的形式)
4.数据定义
对程序中用到的所有变量都需要进行定义。对数据要定义其数据类型,需要时要指定其存储类别
- 类型标识符可用
int
short
long
unsigned
char
float
double
struct
结构体名
union
共用体名
enum
枚举类型名
用typedef
定义的类型名
结构体与共用体的定义形式为
struct struct_name
{成员表列};
union union_name
{成员表列};
用typedef
定义新类型名的形式为:typedef 已有类型 新定义类型;
typedef int COUNT;
- 存储类别可用
auto
static
register
extern
(如不指定存储类别,做auto
处理)
变量的定义形式为:存储类别 数据类型 变量表列;
static float a,b,c;
注意外部数据定义只能用extern
或static
,而不能用auto
或register
5.函数定义
其形式为:
存储类别 数据类型 函数名(形参表列)
函数体
函数的存储类别只能用extern
和static
。函数体是用花括号括起来的,可包括数据定义和语句。函数的定义举例如下
static int max(intx,int y)
{
int z;
z=x>y?x:y;
return(z);
}
6.变量的初始化
可以在定义时对变量或数组指定初始值。
静态变量或外部变量如未初始化,系统自动使其初值为零(对数值型变量)或空(对字符型数据)。对自动变量或寄存器的变量,若未初始化,则其初值为一不可预测的数据。
7.语句
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
其中控制语句包括:
if(expression) {statement1 [else statement2]};
while(expression) {statement};
do (statement) while(expression);
for (exp1;exp2;exp3) {statement};
switch (expression)
{
case constant-expression: statement(1);
case constant-expression: statement(2);
case constant-expression: statement(n);
default: statement(n+1);
}
# 前缀case和default本身并不改变控制流程,它们只起标号作用,在执行上一个case所标志的语句后,继续顺序执行下一个case前缀所标志的语句,除非上一个语句中最后用break语句使控制转出switch结构
break statement;
continue statement;
return statement;
goto statement;
8.预处理指令
# define 宏名 字符串
# define 宏名(参数1,参数2,...,参数n) 字符串
# undef 宏名
# include "文件名" (或<文件名>)
# if 常量表达式
# ifdef 宏名
# ifndef 宏名
# else
# endif