说明:①“# define pl3.1415926”是宏定义命令,P称为符号常量, 即用一个标识符代表一个常量。此处表示用标识符PI代表常量3.1415926。 符号常量的定义形式为: # define标识符常量 ②flot表示实型,即定义r,h和s为实型变量。foat型数据在输入输 出时需要用%f格式控制符 14c语言基本语法成分 1.C语言字符集 字符是C语言最基本的元素,C语言字符集由字母、数字、空白、标 点符号和特殊字符组成(在字符串常量和注释中还可以使用汉字和其它图形 符号)。由字符集中的字符可以构成C语言进一步的语法成分,如标识符 关键字、运算符等。 C程序是用下列字符所组成的字符集写成的: (1)字母:A-Z,a-z (2)数字:0-9 (3)标点符号、特殊字符 (4)空白符:空格,制表符(lab,跳格健),换行符(空行)的总称。 空白符除了在字符、字符串中有意义外,编译系统忽略其它位置的空白。空 白符在程序中只是起到间隔的作用。在程序的恰当位置使用空白符将使程序 更加清晰,增强程序的可读性 2.标识符 标识符是用来标识变量名、符号常量名、函数名、数组名、类型名等实 体(程序对象)的有效字符序列。标识符由用户定义 C语言标识符定义规则包括 (1)标识符只能由字母、数字和下划线三种字符组成,且第一个字符必 须为字母或下划线 例如,合法的标识符:a,i,sum, average, total,Clas,day, student p405;不合法的标识符:a, M. D. John,$123,3D64,a-b (2)大小写敏感,即C认为大小写字母为不同的字符。例如:sum不同 于Sum,BOOK不同于book。C程序员习惯:变量名小写,常量名大写 但不绝对 (3) ANSI C没有限制标识符长度,但各个编译系统都有自己的规定和限 制(TC32个字符,MSC8个字符)
16 说明:① “#define PI 3.1415926”是宏定义命令,PI 称为符号常量, 即用一个标识符代表一个常量。此处表示用标识符 PI 代表常量 3.1415926。 符号常量的定义形式为: #define 标识符 常量 ② float 表示实型,即定义 r,h 和 s 为实型变量。float 型数据在输入输 出时需要用%f 格式控制符。 1.4 C 语言基本语法成分 1. C 语言字符集 字符是 C 语言最基本的元素,C 语言字符集由字母、数字、空白、标 点符号和特殊字符组成(在字符串常量和注释中还可以使用汉字和其它图形 符号)。由字符集中的字符可以构成 C 语言进一步的语法成分,如标识符、 关键字、运算符等。 C 程序是用下列字符所组成的字符集写成的: ⑴ 字母:A-Z,a-z ⑵ 数字:0-9 ⑶ 标点符号、特殊字符: ! # % ^ & + - * / = ~ < > \ | . , ; : ? ' " ( ) [ ] { } ⑷ 空白符:空格,制表符(Tab,跳格健),换行符(空行)的总称。 空白符除了在字符、字符串中有意义外,编译系统忽略其它位置的空白。空 白符在程序中只是起到间隔的作用。在程序的恰当位置使用空白符将使程序 更加清晰,增强程序的可读性。 2. 标识符 标识符是用来标识变量名、符号常量名、函数名、数组名、类型名等实 体(程序对象)的有效字符序列。标识符由用户定义。 C 语言标识符定义规则包括: ⑴ 标识符只能由字母、数字和下划线三种字符组成,且第一个字符必 须为字母或下划线。 例如,合法的标识符:a,i,sum,average,_total,Class,day,student, p405;不合法的标识符:5a,M.D.John,$123,3D64,a-b。 ⑵ 大小写敏感,即 C 认为大小写字母为不同的字符。例如:sum 不同 于 Sum,BOOK 不同于 book。C 程序员习惯:变量名小写,常量名大写, 但不绝对。 ⑶ ANSI C 没有限制标识符长度,但各个编译系统都有自己的规定和限 制(TC 32 个字符,MSC 8 个字符)
例如: student name和 student number,如果取8个字符,系统认为这 两个标识符是相同的。 (4)标识符不能与“关键字”同名,也不与系统预先定义的“标准标识 符”同名,如main、 printf等。 在定义标识符时,建议遵循下面的原则: (1)尽量不要用下划线开头。因为系统内部使用了一些下划线开头的标 识符(如fd、cs、s),避免与系统定义的标识符冲突 (2)尽量做到“见名知义”,如sum,area, score,day,name,age等 (3)变量名、函数名用小写,符号常量用大写 (4)在容易出现混淆的地方应尽量避免使用容易认错的字符。如:数字 1与字母1和字母I,数字0与字母o和O,数字2与字母Z和z 3.关键字 关键字是C语言预先定义的、具有特定意义的标识符,也称为保留字。 C语言包括32个关键字: break continue default do enum extern register return hort switch union volatile while C语言的关键字都是小写。不能重新定义关键字,也不能把关键字定义 为一般标识符。 4.运算符 运算符是用于描述某种运算功能的符号,如+、-、*、/、%等,运算符 可以由一个或多个字符组成。由运算符将常量、变量和函数调用连接起来的 式子称为表达式 根据参与运算的操作数个数,运算符分为:单目(一元)运算符、双目 (二元)运算符和三目(三元)运算符。 C语言运算符分为以下几类 (1)算术运算符:+、-、*、/、% (2)关系运算符:<、<=、>>、==、!= (3)逻辑运算符:!、&&、‖ (4)位运算符:<<、>、~、|^& (5)赋值运算符:=及扩展赋值运算符 (6)条件运算符:? (7)逗号运算符 (8)指针和地址运算符:*、&
17 例如:student_name 和 student_number,如果取 8 个字符,系统认为这 两个标识符是相同的。 ⑷ 标识符不能与“关键字”同名,也不与系统预先定义的“标准标识 符”同名,如 main、printf 等。 在定义标识符时,建议遵循下面的原则: ⑴ 尽量不要用下划线开头。因为系统内部使用了一些下划线开头的标 识符(如_fd、_cs、_ss),避免与系统定义的标识符冲突。 ⑵ 尽量做到“见名知义”,如 sum,area,score,day,name,age 等。 ⑶ 变量名、函数名用小写,符号常量用大写。 ⑷ 在容易出现混淆的地方应尽量避免使用容易认错的字符。如:数字 1 与字母 l 和字母 I,数字 0 与字母 o 和 O,数字 2 与字母 Z 和 z。 3. 关键字 关键字是 C 语言预先定义的、具有特定意义的标识符,也称为保留字。 C 语言包括 32 个关键字: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while C 语言的关键字都是小写。不能重新定义关键字,也不能把关键字定义 为一般标识符。 4. 运算符 运算符是用于描述某种运算功能的符号,如+、-、*、/、%等,运算符 可以由一个或多个字符组成。由运算符将常量、变量和函数调用连接起来的 式子称为表达式。 根据参与运算的操作数个数,运算符分为:单目(一元)运算符、双目 (二元)运算符和三目(三元)运算符。 C 语言运算符分为以下几类: ⑴ 算术运算符:+、-、*、/、% ⑵ 关系运算符:<、<=、>、>=、= =、!= ⑶ 逻辑运算符:!、&&、|| ⑷ 位运算符:<<、>>、~、|、^、& ⑸ 赋值运算符:=及扩展赋值运算符 ⑹ 条件运算符:? : ⑺ 逗号运算符: , ⑻ 指针和地址运算符:*、&
9)求字节运算符: sizeof 0分量运算符:、-> aD下标运算符:[] ④D强制类型转换运算符:(类型) 03其他:如函数调用运算符() 5.分隔符 就像写文章要有标点符号一样,写程序也要有一些分隔符。在C语言 程序中,空格、逗号、回车/换行等,在各自不同的应用场合起着分隔符的 作用。例如,在程序中的相邻保留字、标识符之间应有空格或回车/换行作 为分隔符,相邻同类项之间用逗号作为分隔符 如语句 Int x,y;,中的空格和逗号都起着分隔符的作用,如果缺少了空 格程序就会出错,缺少了逗号x和y就会被认为是一个变量。 6.其他符号 花括号“{”和“}”通常用于标识函数体或者一个语句块(即复合语句)。 “/*”和“*/”构成一组注释符。编译系统将/*…*之间的所有内容看 作注释,编译时编译系统忽略注释 (1)注释在程序中的作用:提示、解释作用 注释与软件的文档同等重要,要养成使用注释的良好习惯,这对软件的 维护相当重要。记住:程序是要给别人看的,自己也许还会看自己几年前编 制的程序(相当别人看你的程序),清晰的注释有助于他人理解你的程序、 算法的思路 (2)在软件开发过程中,还可以将注释用于程序的调试,暂时屏蔽一些 语句 例如,在调式程序时暂时不需要运行某段语句,而又不希望立即从程序 中删除它们,可以使用注释符将这段程序框起来,暂时屏蔽这段程序,以后 可以方便地恢复。 1.5c语言数据类型 为了按不同的方式和要求处理数据,数据必须区分为不同的类型。在C 语言程序中,每个数据都属于一个确定的、具体的数据类型。不同的数据类 型在数据标示形式,合法的取值范围,占用内存空间大小,可参与的运算种 类等方面都有所不同 C语言的数据类型十分丰富,见图1.3
18 ⑼ 求字节运算符:sizeof ⑽ 分量运算符:.、-> ⑾ 下标运算符:[ ] ⑿ 强制类型转换运算符:(类型) ⒀ 其他:如函数调用运算符( ) 5. 分隔符 就像写文章要有标点符号一样,写程序也要有一些分隔符。在 C 语言 程序中,空格、逗号、回车/换行等,在各自不同的应用场合起着分隔符的 作用。例如,在程序中的相邻保留字、标识符之间应有空格或回车/换行作 为分隔符,相邻同类项之间用逗号作为分隔符。 如语句 int x,y; 中的空格和逗号都起着分隔符的作用,如果缺少了空 格程序就会出错,缺少了逗号 x 和 y 就会被认为是一个变量。 6. 其他符号 花括号“{”和“}”通常用于标识函数体或者一个语句块(即复合语句)。 “/*”和“*/”构成一组注释符。编译系统将/* ... */之间的所有内容看 作注释,编译时编译系统忽略注释。 ⑴ 注释在程序中的作用:提示、解释作用。 注释与软件的文档同等重要,要养成使用注释的良好习惯,这对软件的 维护相当重要。记住:程序是要给别人看的,自己也许还会看自己几年前编 制的程序(相当别人看你的程序),清晰的注释有助于他人理解你的程序、 算法的思路。 ⑵ 在软件开发过程中,还可以将注释用于程序的调试,暂时屏蔽一些 语句。 例如,在调式程序时暂时不需要运行某段语句,而又不希望立即从程序 中删除它们,可以使用注释符将这段程序框起来,暂时屏蔽这段程序,以后 可以方便地恢复。 1.5 C 语言数据类型 为了按不同的方式和要求处理数据,数据必须区分为不同的类型。在 C 语言程序中,每个数据都属于一个确定的、具体的数据类型。不同的数据类 型在数据标示形式,合法的取值范围,占用内存空间大小,可参与的运算种 类等方面都有所不同。 C 语言的数据类型十分丰富,见图 1.3
短整型 short int) 整型{整型m 长整型( long int) 基本类型{实酸得浮点型(单精度型 枚举类型(enum) 数组类型 C数据类型 结构体类型(s 构造类型 共用体类型( union) 指针类型 类型(void 图1.3C语言的数据类型 C语言中的数据有常量与变量之分,它们分别属于上述类型。常量与变 量的区别是:在程序执行过程中,常量的值不能由程序改变,而变量的值可 由程序改变。实际上变量是内存中的一个存储区,在存储区中存放着该变量 的值,每个变量有一个名字,如:x,sum,area等。 变量在使用前必须进行说明,其目的是为变量在内存中申请存放数据的 内存空间。 151整型数据 1.整型常量 整型常量即整型常数。C语言中,整型常量可用3种表示方式: (1)十进制数:以非0数字开头的数,如123,-5,0 (2)八进制数:以数字0开头的数,如0123表示八进制数(123)8,等于 十进制数83 (3)十六进制数:以0x或0X开头的数,如0x123表示十六进制数(123)6, 等于十进制数291。 2.整型变量 C语言中的整型变量分为 short int、int和 long int三种类型,每种类型 又分为有符号类型和无符号类型,分别用 unsigned和 signed表示,缺省为 signed类型。各种整型变量的长度和表示范围如表1-10所示
19 图 1.3 C 语言的数据类型 C 语言中的数据有常量与变量之分,它们分别属于上述类型。常量与变 量的区别是:在程序执行过程中,常量的值不能由程序改变,而变量的值可 由程序改变。实际上变量是内存中的一个存储区,在存储区中存放着该变量 的值,每个变量有一个名字,如:x,sum,area 等。 变量在使用前必须进行说明,其目的是为变量在内存中申请存放数据的 内存空间。 1.5.1 整型数据 1. 整型常量 整型常量即整型常数。C 语言中,整型常量可用 3 种表示方式: ⑴ 十进制数:以非 0 数字开头的数,如 123,-5,0。 ⑵ 八进制数:以数字 0 开头的数,如 0123 表示八进制数(123)8,等于 十进制数 83。 ⑶ 十六进制数:以0x或0X开头的数,如0x123表示十六进制数(123)16, 等于十进制数 291。 2. 整型变量 C 语言中的整型变量分为 short int、int 和 long int 三种类型,每种类型 又分为有符号类型和无符号类型,分别用 unsigned 和 signed 表示,缺省为 signed 类型。各种整型变量的长度和表示范围如表 1-10 所示。 字符型(char) 实型(浮点型) 单精度型(float) 双精度型(double) 整型 短整型(short int) 整型(int) 长整型(long int) 枚举类型(enum) 数组类型 结构体类型(struct) 共用体类型(union) 文件类型(FILE) 基本类型 构造类型 指针类型 空类型(void) C 数据类型
表1-10整数类型 类型 比特数 最小取值范围 Signed] int 32768~32767 即-215~(25-1) unsigned int 0~65535 即0~(26-1) [signed] short [int] 32768~32767 p-25~(2-1) unsigned short [int 16 0~65535 即0~(26-1) 2147483648~2147483647即-23~(2-1) unsigned long [int] 0~4294967295即0~(22-1) 如果在整常数后面加字母U或u,表示 short int型常数:加字母L或1 表示 long int型常数。 3.整型变量的定义 变量的定义形式为: 数据类型变量名表; 其中变量名表的变量可为1个或多个,中间用逗号“,”分隔 如:inta,b,um unsigned long x 152实型数据 带有小数点的数称为实数,又称为浮点数 1.实型常量 C语言中,实型常量可用两种表示方式: (1)十进制形式:由数字和小数点组成(必须有小数点),但小数点前后 的0可以省略,如0.12,,12,123.0,123.,0.等。 (2)指数形式:如1.2e3和0.12E4都表示1.2×103。注意e(或E)前面 要有数字,且e(或E)后面的指数必须为整数。如1E2,2.3e3.5,e2等都 是不合法的表示形式 2.实型变量 C语言中的实型变量分为单精度型( float)、双精度型( double)和长双精度 型( ong double,各种类型的长度和数值范围如表1-11所示。 表1-11实数类 比特数有效数字 数值范围 3.4×10~3.4×103 64 15-16 1.7×108~1.7×1038 long double 18-19 -34×10~1.1×10 个实型常数默认为 double型。要表示foat型数,则必须在实数后加
20 表 1-10 整数类型 类型 比特数 最小取值范围 [signed] int 16 -32768~32767 即-2 15~(2 15 -1) unsigned [int] 16 0~65535 即 0~(2 16 -1) [signed] short [int] 16 -32768~32767 即-2 15~(2 15 -1) unsigned short [int] 16 0~65535 即 0~(2 16 -1) long [int] 32 -2147483648~2147483647 即-2 31~(2 31 -1) unsigned long [int] 32 0~4294967295 即 0~(2 32 -1) 如果在整常数后面加字母 U 或 u,表示 short int 型常数;加字母 L 或 l 表示 long int 型常数。 3. 整型变量的定义 变量的定义形式为: 数据类型 变量名表; 其中变量名表的变量可为 1 个或多个,中间用逗号“,”分隔。 如:int a,b,sum; unsigned long x; 1.5.2 实型数据 带有小数点的数称为实数,又称为浮点数。 1. 实型常量 C 语言中,实型常量可用两种表示方式: ⑴ 十进制形式:由数字和小数点组成(必须有小数点),但小数点前后 的 0 可以省略,如 0.12,.12,123.0,123.,0.等。 ⑵ 指数形式:如 1.2e3 和 0.12E4 都表示 1.2×103。注意 e(或 E)前面 要有数字,且 e(或 E)后面的指数必须为整数。如 1.E2,2.3e3.5,e2 等都 是不合法的表示形式。 2. 实型变量 C 语言中的实型变量分为单精度型(float)、双精度型(double)和长双精度 型(long double),各种类型的长度和数值范围如表 1-11 所示。 表 1-11 实数类型 类型 比特数 有效数字 数值范围 float 32 6-7 -3.4×1038 ~ 3.4×1038 double 64 15-16 -1.7×10308 ~ 1.7×10308 long double 80 18-19 -3.4×104932 ~ 1.1×104932 一个实型常数默认为 double 型。要表示 float 型数,则必须在实数后加