编辑: 笔墨随风 | 2018-06-03 |
第二章
1
第二章 数据对象与计算 计算机程序处理数据, 写程序就是描述数据的处理过程, 其中必然涉及数据的描述和计 算问题.
例如,在C程序里可以写出下面片段,这是一个表示了某种计算过程的 表达式 , 其中包含了一些 数据 ,如整数和实数等: : -(3.24 *
5 + sin(2,3)) /
4 * 6.24 要理解这种表达式,写程序时知道如何写出所需表达式,就必须知道 C 语言对各种数据的 写法(术语是数据的描述)有什么规定:在表达式里可以写什么?它们表示什么意思?写出 的表达式表示了什么计算过程?有关计算的结果是什么?本章首先解决这些问题. 本章将首先讨论 C 语言中各种基本数据的描述,然后介绍如何从基本数据元素出发描 述计算,如何写好能求出所需结果的表达式.在这一章里,读者将初步接触到计算机领域的 许多重要概念,看到它们在简单程序中的地位和作用. 2.1 基本字符、名字表示、标识符和关键字 一个 C 程序就是 C 语言基本字符的一个符合规定形式的序列.C 语言基本字符包括: 1. 数字字符,0,1,2,3,4,5,6,7,8,9;
2. 大小写拉丁字母:a~z,A~Z;
3. 其他一些可打印(可以显示)的字符(如各种标点符号、运算符号、括号等) ,包括: 现在不必死记这些,随着学习进展,读者将很容易记住这些字符的意义和作用. 4. 还有一些特殊字符,如空格符、换行符、制表符等. 空格符、换行符、制表符等统称为空白字符.空白字符在程序中主要用于分隔其他成分. 按规定,C 程序中大部分地方增加空白字符都不影响程序意义.因此人们写程序中常利 用这种性质,通过加入一些空白字符,把程序排成适当格式,以增强程序的可读性.例如, 在适当地方换行, 在适当地方加空格或制表符. 这样能使程序的表现形式更好反映其结构和 所实现的计算过程.举例说,第1章的简单 C 程序也可以写成下面样子: #include int main(){printf( Good morning!\n );
return 0;
} 这明显不如前面的写法清晰. 对更大的程序情况则会更糟糕. 本书后面讨论中还会提出对各 种程序成分的较好写法,书中程序示例也反映了这方面的情况. 构成 C 程序的基本成分包括各种名字(如上面出现的 main、printf 等等) ,各种数 值表示(如
125、3.14 等等) ,各种运算符和其他符号. 名字(标识符)的构成 程序中有许多需要命名的对象. 例如, 程序中常常需要定义一些东西, 以便在各处使用. 为了在定义和使用之间建立联系, 表示不同位置用的是同一个对象, 基本的方式就是为程序 对象命名,通过名字建立起定义与使用间、同一对象的不同使用间的联系.为了这种需要, C 语言规定了名字的书写形式.程序中的名字称为标识符. 一个标识符是字母和数字字符的一个连续序列, 其中不能有空白字符, 而且要求第一个 字符必须是字母.为了方便起见,C 语言特别规定将下划线字符 _ 也当作字母看待.这 就是说,下划线可以出现在标识符中的任何地方,特别是可以作为标识符的第一个字符.下 面是一些标识符的例子: 裘宗燕 从问题到程序(2003 年修订) ,
第二章
2 abcd Beijing C_Programming _f2048 sin a3b06 xt386ex A_great_machine Small_talk_80 FORTRAN_90 以下划线开始的标识符保留给系统使用, 在我们编写普通程序时不要使用这种标识符, 以免 与系统内部的名字冲突造成程序问题. 如果一个字符序列中出现了非字母、非数字、也非下划线的字符,那么它就不是一个标 识符了(但有可能其中一部分是个标识符,例如 x3+5+y,其中 x3 和y都是标识符,中间 的+5+不属于这两个标识符) .下面是一些非标识符的字符序列: += 3set a[32] $$$$ sin(2+5) ::ab4== C 语言还规定,标识符中同一字母的大写形式和小写形式将看作不同字符,这样,a 和A不同,name、Name、NAME、naMe 和nMAE 是互不相同的标识符. 关键字 C 语言的合法标识符中有一个特殊的小集合,其中的标识符称为关键字.作为关键字的 标识符在程序里具有语言预先定义好的特殊意义, 因此不能用于其他目的, 不能作为普通的 名字使用.C 语言关键字共