C51单片机高效入门(第2版)
上QQ阅读APP看书,第一时间看更新

第3章 C语言数据类型运算符表达式

3.1 C语言概论

3.1.1 C语言的发展过程

C语言是在1969年~1973年这段时间问世的,后来到了1978年,由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言,同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书,通常简称为《K&R》或“白皮书”。但是,在“白皮书”中并没有定义一个完整的标准C语言,到1983年,由美国国家标准学会在此基础上制定了一个C语言标准,我们称之为ANSI C。到了今天,C语言已经成为了一门在整个计算机领域的普遍应用的语言了。

3.1.2 C语言的特点

C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护,语言见解紧凑,使用方便、灵活。它不仅具有丰富的运算符和数据类型,以便于实现各类复杂的数据结构,它还可以直接访问内存地址,能进行位(bit)操作,尤其能够胜任开发操作系统的工作。由于C语言实现了对硬件的编程操作,因此C语言既有高级语言的功能,也有低级语言的优势。它可用于系统软件的开发,同样也适用于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。如果原来使用的是汇编语言编写的程序,在若干时间后再去做升级和维护就会感觉非常不便,别人写的程序不宜被读懂,但在维护C语言写的程序时,此时其优势就大大体现出来了。

3.1.3 C源程序的结构特点

为了说明C语言的结构特点,我们先来看以下两个典型的程序例子。这两个程序由简到难,但从中体现了C语言在组成结构上的特点。从这些例子中,我们可以了解到组成一个C源程序的基本部分和书写格式。

【例3-1】

978-7-111-30335-0-Chapter03-1.jpg

main是主函数的函数名,表示这是一个主函数。每一个C程序都必须有,而且只能有一个主函数(main函数)。函数调用语句——printf函数的功能是在显示器上显示我们要输出的内容。printf函数是一个由系统定义好的标准函数,在程序中我们可以直接调用。

【例3-2】

978-7-111-30335-0-Chapter03-2.jpg

此函数的功能是由用户输入两个整数,然后输出其中一个较小的数。

例3-2程序的功能是由用户输入两个整数,程序执行后输出其中较小的数。本程序由两个函数组成,一个主函数,一个min函数。函数之间是并列的关系。在主函数中可以调用其他函数。min函数的功能是比较两个数,然后把较小的数返回给主函数。min函数是一个用户自定义函数。因此在主函数中要给出说明(程序的第一行)。由此可见,在程序的说明部分中,不仅可以有变量的说明,还可以有函数的说明。关于函数的详细内容将在第五章介绍。在例程中,可以看到程序每行后面有用/*和*/括起来的内容,我们称之为注释部分,程序在编译时,不会执行这部分内容。

例3-2程序执行的过程是,首先出现让用户输入两个数的提示信息,scanf函数的作用是将这两个数送入变量x,y中,然后调用min函数,并把x,y的值传送给min函数的形式参数a,b。min函数中的语句用来比较变量a,b数值的大小,把小的那个数返回给主函数的变量z,最后再显示输出z的值。

下面总结一下C语言的特点:

1)一个C语言源程序可以由一个或多个源文件组成。

2)每个源文件可由一个或多个函数组成。

3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

4)源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6)标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

3.1.4 C语言的字符集

字符是组成语言的最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其他可表示的图形符号。

1.字母

小写字母a~z共26个;

大写字母A~Z共26个;

2.数字

0~9共10个。

3.空白符

空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其他地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。

4.标点和特殊字符

3.1.5 C语言词汇

在C语言中使用的词汇分为六类:标识符,关键字,运算符,分隔符,常量,注释符等。

1.标识符

在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。

以下标识符是合法的:

a,BOOKS,abc5

以下标识符是非法的:

4s以数字开头

s#T出现非法字符#

在使用标识符时还必须注意以下几点:

(1)C语言编译器版本的不同,使得标识符的长度也会有所不同。例如有些版本中规定标识符前八位有效。

(2)在标识符中,大小写是严格区分的。例如TEACHER和teacher是两个不同的标识符。

(3)定义标识符时,取的名字应尽量有直观的意义,以便于阅读理解,做到“顾名思义”。

2.关键字

关键字是在C语言系统中具有特定意义的字符串,通常也称为保留字。用户定义的标识符名字不能与关键字相同。C语言的关键字分为以下几类:

(1)类型说明符:用来定义变量、函数或其他数据结构的类型。如例程中用到的int,double等。

(2)语句定义符:用来表示一个语句的功能意义。如我们后面要讲到的“if else”就是条件语句的语句定义符。

(3)预处理命令字:表示预处理命令的关键字。如例程中用到的“include”。

3.运算符

C语言中含有相当丰富的运算符。运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言有三大运算符:算术、关系与逻辑、位操作。另外,C语言还有一些特殊的运算符,用于完成一些特殊的任务。

4.分隔符

在C语言中的分隔符有逗号和空格两种。逗号主要用在数据类型说明和函数参数表中,分隔各个变量;而空格多用于语句各单词之间,做间隔符。

5.常量

C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。

6.注释符

C语言的注释符是从“/*”开头到以“*/”结尾的内容,在“/*”和“*/”之间的内容即为注释。程序在编译时,不对这些注释内容做任何处理。注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义,方便了程序的编写及调试、维护工作。