程序中用到的所有数据都必须指定其数据类型,数据有常量和变量之分,分别属于图2-2所示的类型。C语言不仅提供了多种基本数据类型,还提供了构造更加复杂的用户自定义数据结构的机制。
基本数据类型是C程序中最常用的数据类型,是构造数据类型和指针类型的基础。要想深入学习好C语言,理解并掌握好基本数据类型的有关知识是十分必要的。本任务只介绍基本数据类型中的整型、浮点型和字符型,其余类型在以后各项目中陆续介绍。
图2-2 C语言的数据类型
1.常量和符号常量
在程序运行过程中,其值不能改变的量称为常量。有整型常量(-1、0、12等),字符型常量(‘a’、‘b’等),浮点型常量(123.45、1.2e3等),这种常量称为直接常量或字面常量。也可以用一个标识符来表示一个常量,即符号常量。
【例2-2】程序li2_2_1。
【程序说明】
(1)#define PI 3.14159是定义符号常量PI,程序中PI的值为3.14159,注意,命令后面没有分号。
(2)语句“float r;”是变量声明语句。声明了一个实型变量r,用来存放圆的半径。
(3)语句“scanf("%f",&r);”是从键盘输入一个实型数赋给变量r。其中,“%f”表示实数,“&”表示取地址,&r是r的地址。本例中将输入的数值1存放在r的内存单元中。
(4)语句“scanf("%f",&r);”是输入提示语句,提示用户从键盘输入圆的半径。语句“printf("圆周长为:%.7f\n圆面积为:%.7f\n",2*PI*r,PI*r*r);”为输出圆的周长和面积,其中%.7f表示输出格式为实型,且保留7位小数(将在2.3.2节详细讲述)。
使用符号常量的好处有:
(1)避免反复书写,减少出错率。如果一个程序中多次使用一个常量,就要多次书写,而定义了符号常量,只需要书写一次数值,在使用的地方用符号替代就可以了,能够有效地减少出错概率。
(2)一改全改,方便实用。当程序中多次出现同一个常量需要修改时,必须逐个修改,很麻烦且可能会出错。而用符号常量,在需要修改时,只需修改定义,就可以做到“一改全改”,非常方便。例如,当PI的值变为3.1415926时,只需在PI的定义语句修改即可,即“#define PI 3.1415926”,程序中所有的PI的值就都变为3.1415926。与使用直接常量相比,修改程序要简单和轻松得多,修改后程序执行过程为:
输入圆的半径:
1(www.xing528.com)
圆周长为:6.2831852
圆面积为:3.1415926
从形式上看,符号常量是标识符,像变量,但实际上它是常量,其值在程序运行过程中不能改变。习惯上,符号常量名用大写表示,变量名用小写表示,以示区分。
符号常量在使用之前必须先定义,在C语言中有两种定义符号常量的方式。
(1)用#define形式定义符号常量。
格式:#define常量名常量值;
例如:#define PI 3.14159;
(2)用const关键字来定义符号常量。
格式:const数据类型常量名=常量值;
例如:const double pi=3.14159;
其中,#define是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令,编译时,预处理器会把程序中出现的常量名用常量值来代替。#define命令一般出现在函数外部,其有效范围从定义处到源程序文件结束。每个#define只能定义一个符号常量,只占一行且行的末尾不能加分号。const是声明常量语句,出现在函数内部的声明部分,句末加分号,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝。const方式是C++中广泛采用的定义符号常量的方法。
2.变量
如子任务2.2.1中所述,变量代表内存中具有特定属性的一个存储单元,它用来存放数据(变量的值),一般情况下,变量用来保存程序运行过程中输入的数据、计算获得的中间结果以及程序的最终结果。在程序执行期间,变量的值是可以改变的,为方便引用,我们给每个变量定义名字,变量名实际上是以一个名字代表一个内存地址。如图2-3所示。
图2-3 变量名、变量值与存储单元的关系
C语言中,要求对所有用到的变量必须“先定义后使用”,且每个变量属于一个数据类型,在编译时为其分配相应的存储单元。没有事先定义的变量,系统不把它认作变量名,以保证程序中变量名能正确使用以及编译时据此检查在程序中对该变量进行的运算是否合法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。