1.5.2 C/C++程序的基本构成
1.标识符
标识符用来给程序中的常量、变量、函数、文件指针和数据类型等命名。如例 1.3 中的area和r就是标识符,这种标识符称为(用户)自定义标识符。其构成规则如下:
① 由字母、数字、下画线组成;且第1个字符不能是数字,必须是字母或下画线。
② 标识符中的大、小写字母的含义不同,即temp,Temp和TEMP是3个不同的标识符。通常变量用小写字母,符号常量用大写字母。
③ ANSI C和标准C++的标识符的有效长度是1~31个字符,Visual C++标识符的有效长度为1~247个字符,而Turbo C 2.0编译系统只能识别前8个字符。
④ 用户自定义标识符时,应当尽量遵循“见名知意”和“简洁明了”的原则,且不能与关键字相同。
2.关键字
例1.3中的float和int是另一种标识符,在C语言中称为关键字或保留标识符。它是C语言中已预先定义,且具有特定含义的标识符。ANSI C标准共有32个关键字,如表1.1所示。所有关键字都用小写英文字母表示,且这些关键字不允许用作用户标识符。
还有一种标识符,如预编译处理命令(如define)、库函数的名字(如printf)等称为预定义标识符。用户如果把这些标识符另作它用,这些标识符就将失去预先定义的原意。因此,在使用时要加以注意。
表1.1 关键字
3.运算符
例1.3中的=、*、&是C语言中的运算符。
运算符是用来表示某种运算的符号,其中有的由一个字符组成,例如 +、-、*、/ 等;有的由多个字符组成,例如<=、<<、&&、!= 等。C语言的运算符主要有以下几类:
① 算术运算符 (+ - * / %)
② 关系运算符 (> < == >= <= !=)
③ 逻辑运算符 (! && || )
④ 位运算符 (<< >> ~ | ^ &)
⑤ 赋值运算符 (= 及其扩展赋值运算符)
⑥ 条件运算符 (? :)
⑦ 逗号运算符 (,)
⑧ 指针运算符 (* 和 &)
⑨ 求字节数运算符 (sizeof)
⑩ 强制类型转换运算符 ((类型))
⑪分量运算符 (. ->)
⑫下标运算符 ([ ])
有些运算符具有双重含义,例如“%”可以作为求余运算符;但是,当它出现在输入、输出函数中时,就是“格式控制符”了。
上述运算符的应用将在第2 章中介绍。C++除了具有上述运算符以外,还具有更加丰富的其他运算符,这里不作介绍,读者可参考C++的书籍。
4.常量和变量
常量是指在程序运行过程中不会改变的量。常量分为整型常量、实型常量和字符型常量。例如5,-34是整型常量,2.3,-15.0是实型常量,' a ' 为字符常量。
变量是指在程序运行过程中其值可以改变的量。例如源程序1-3.C中的area和r。每个变量都有名字和类型,系统根据变量的类型为其分配相应的内存单元。例如,Turbo C 2.0系统为整型(int型)变量分配2个字节的内存单元,为实型(float型)变量分配4个字节的内存单元,为字符型(char型)的变量分配1个字节的内存单元。内存单元中存放的是变量的值。程序执行过程中对数据的读、写是通过变量名找到与其对应的内存单元来实现的。
提示
C语言规定:所有变量都必须“先定义(说明变量的名字和数据类型),后使用”。任何一个未经定义就使用的变量都会被C语言的编译程序认为是非法变量,引起如下编译错:
Undefined symbol 'xxxxxx'
5.函数
例1.3程序中的printf()和scanf()是C语言的库函数中为用户提供的输出函数和输入函数。C语言中的函数分为:系统提供的库函数和用户自定义函数。对于库函数,用户可以直接调用;用户自定义函数是用户用以解决专门问题所定义的函数(参见第6章)。
【例1.4】 从键盘上输入两个整数,求其中的较大数。
源程序1-4.C
1 #include<stdio.h> 2 void main() 3 { 4 int x,y,z; 5 printf("输入两个整数:"); /* 提示输入 */ 6 scanf("%d%d",&x,&y); /* 输入两个整数 */ 7 z=max(x,y); /* 调用求较大数函数max()*/ 8 printf("max=%d",z); /* 输出较大数 */ 9 } 10 int max(int x,int y) /* 自定义求较大数函数max()*/ 11 { 12 return(x>y?x:y); /* 返回较大数 */ 13 }
程序运行实例如下:
输入两个整数:34 89↙ max=89
上面程序由两个函数组成:main()和max()。其中max()是自定义函数,用于求两个数中的较大数。通过main()函数调用max()函数,由max()函数返回较大数。程序从main()函数开始执行,执行到第7行函数调用处,转去第10行执行被调用函数max();max()函数执行完后,再返回到主函数的第7行,将较大数赋给变量z,继续执行函数调用后面的语句行。