1.4 C语言基本组成
本节主要描述C语言的一些基本要素。当开始编写C程序时,可能对C语言的一些基本问题感到困惑,如C语言所使用的组成字符、常见的约定、关键字和术语等。一般来讲,描述一个完整的程序时,都有固定的结构要求和具体的描述方法,类似于我们说话、写文章要有主谓宾基本语句部分一样,缺少一部分就不成一句话了。在这一节中将向读者介绍一些用C语言进行程序设计的有关基本语法知识。
1.4.1 常见的语法规范
在前面的源程序中,遇到了诸如main、int、r、float、s、printf等符号和一些固定的标点符号,它们的作用和性质并不完全相同,它们代表什么意思呢?接下来从最基本的组成结构开始研究C语言的最基本构成。
首先,字符是组成语言的最基本的元素。C语言字符集由字母、数字、空格、标点和特殊字符组成。在字符常量和字符串常量中,若调试系统认可,那么在注释中还可以使用汉字或其他可表示的图形符号。组成C语言基本词汇的基本字符有如下几种:
◆ 字母:包括小写字母a~z共26个以及大写字母A~Z共26个。
◆ 数字:0~9共10个。
◆ 空白符:空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其他地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不产生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。
C语言中所使用的词汇统称为C语言的词汇集。在C语言的词汇集中包含的词汇分为6类:标识符、关键字、运算符、分隔符、常量和注释符。
◆ 标识符:在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能是字母(A~Z,a~z)、数字(0~9)和下画线(_)组成的字符串,并且其第一个字符必须是字母或下划线。例如,以下标识符是合法的:
student a b Book _ex1 Int
以下标识符是非法的:
4a /* 以数字开头*/ s%T /*出现非法字符*/ -3x /*以减号开头*/ int /*使用了关键字*/
注意
在使用标识符时还必须注意以下几点:
◆ 标准C语言不限制标识符的长度,但它受各种版本的C语言编译系统的限制,同时也受到具体机器的限制。例如在某版本C中规定标识符前8位有效,当两个标识符前8位相同时,则被认为是同一个标识符。例如student_123和student_145被认为是两个相同的变量。
◆在标识符中,大小写是有区别的。例如Book和book是两个不同的标识符。
◆ 标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量具有一定的含义,以便于阅读理解。例如用pi代表圆周率,用sum代表总和,用name代表名字等。
◆ 使用过程中要注意标识符不能是C语言的关键字。
◆ 注意字符和易混的数字。例如字母o和数字0、字母l和数字1等比较容易认错,在定义标识符的时候一定要注意。
◆ 关键字:C语言规定的具有特定意义的字符串称为关键字,通常也叫做保留字。用户定义的标识符不应与关键字相同。常见的C语言的关键字如表1.1所示。
◆ 运算符:C语言中含有相当丰富的运算符。运算符与变量、函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。
◆ 分隔符:在C语言中采用的分隔符有逗号和空格两种。逗号主要用在类型说明和函数参数表中,分隔各个变量;空格多用于语句各单词之间,作间隔符。在关键字和标识符之间必须要有一个以上的空格符作为间隔,否则将会出现语法错误,例如把“int a;”写成“inta”,C编译器会把inta当成一个标识符处理,其结果必然出错。
◆ 常量:C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。在后面章节中将专门给予介绍。
◆ 注释符:C语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释做任何处理。注释可出现在程序中的任何位置。注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符标识,使编译跳过不做处理,待调试结束后再去掉注释符。
1.4.2 代码编写规范
尽管每个人在编写程序代码时都有所差别,然而按照规范的编写格式,自己和他人在读写程序时都会感觉轻松,程序的可维护性也会大大增强,所以掌握基本的编写规范至关重要。一般说来,常见的程序编写格式的约定有下面几个:
◆ 源程序通常使用小写字母,只有符号常量或其他特殊用途的符号才大写。
◆ 不使用行号,通常按语句顺序执行。可以一条语句占一行,也可多条语句占一行。不同类型的语句,不同级别的语句间最好写成锯齿状结构。建议同一层次的语句应左对齐。
◆ 一条语句中不同成分之间应使用空格隔开。标识符、关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
◆ 用分号作为语句的结束符,不可省略(即便是最后一条语句也不能省略)。但预处理命令、函数头和花括号“}”之后不能加分号。
◆ 用大括号“{}”表示各个结构层次的范围。可以表示函数,也可表示循环体等。
◆ 程序中的空行不影响程序的执行,可以为了程序清晰而加上。但不要在一条语句中间加空行。
◆ 建议多使用注释信息,以增加程序的可读性。
◆ 源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。