常量和变量

在计算机高级语言中,数据有两种表现形式:常量和变量。

1、常量

在程序运行过程中,其值不能被改变的量称为常量。

常用的常量有以下几类:

(1)整型常量。如1000,1234,0,-345等都是整型常量。

(2)实型常量。有两种表示形式:

a、十进制小数形式,由数字和小数点组成。如:123.456,0.345,-56.79,0.0,12.0等。

b、指数形式,如12.34e3(代表12.34×10e3),-346.87e-25(代表-346.87×10e-25),0.145E25(代表0.145×10e-25)等。由于在计算机输入或输出时,无法表示上角或下角,故规定以字母e或E表示以10为底的指数。但应注意:e或E之前必须有数字,且e或E后面必须为整数。如不能写成e4,12e2.5.

(3)字符常量。有两种形式的字符常量:

a、普通字符,用单撇号括起来的一个字符,如:'a','Z','3','?','#'。不能写成'ab'或'12'。请注意:单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。'a'和'A'是不同的字符常量。字符常量存储在计算机存储单元中时,并不是存储字符(如a,z,#等)本身,而是以其代码(一般采用ASCII代码)存储的,例如字符'a'的ASCII化代码是97,因此,在存储单元中存放的是97(以二进制形式存放)。

b、转义字符,除了以上形式的字符常量之外,C还允许用一种特殊形式的字符常量,就是以字符\开头的字符序列。例如,前面已经遇到过的,在printf函数中的'\n'它代表一个“换行”符。'\t'代表将输出的位置跳到下一个tab位置,一个tab位置为8列。这是一种在屏幕上无法显示的“控制字符”,在程序中也无法用一个一般形式的字符来表示,只能采用这样的特殊形式来表示。

常用的以“\”开头的特殊字符如下:

(4)字符串常量。如“boy”,“123”等,用双撇号把若干个字符括起来,字符串常量是双撇号中的全部字符(但不包括双撇号本身)。注意不能错写成'CHINA','boy','123'。单撇号内只能包含一个字符,双撇号内可以包含一个字符串。

(5)符号常量。用#define指令,指定用一个符号名称代表一个常量。如

#define PI 3.1416 //注意行末没有分号

经过以上的指定后,本文件中从此行开始所有的PI都代表3.1416.在对程序进行编译前,预处理器先对PI进行处理,把所有PI全部置换为3.1416。这种用一个符号名代表一个常量的,称为符号常量。在预编译后,符号常量已全部变成字面常量(3.1416)。使用符号常量有以下好处。

a、含义清楚。看程序时从PI就可大致知道它代表圆周率,在定义符号常量名时应该考虑“见名知意”。在一个规范的程序中不提倡使用很多的常数,如:sum=15*30*23.5*43,在检查程序时搞不清各个常数究竟代表什么。应尽量使用“见名知意”的变量名和符号常量。

b、在需要改变程序中多处用到的同一个常量时,能做到“一改全改”。例如在程序中多处用到某物品的价格,如果价格用一常数30表示,则在价格调整为40时,就需要在程序中作多处修改,若用符号常量PRICE代表价格,只须改动一处即可:

#define PRICE 40

2、变量

变量代表一个有名字的、具有特定属性的一个存储单元。它用来存放数据,也就是存放变量的值。在程序运行期间,变量的值是可以改变的。

变量必须先定义后使用。在定义时指定该变量的名字和类型。一个变量应该有一个名字,以便被引用。变量名实际上是以一个名字代表的一个存储地址。在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找出相应的内存地址,从该存储单元中读取数据。

3、常变量

C99允许使用常变量,如:

const int a=3;

表示a被定义为一个整型变量,指定其值为3,而且在变量存在期间其值不能改变。

常变量与常量的异同是:常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。

说一说常变量与符号常量有什么不同?

如#define Pi 3.1415926 //定义符号常量

const float pi=3.1415926; //定义常变量

符号常量Pi和常变量pi都代表3.1415926,在程序中都能使用。但二者性质不同:定义符号常量用#define指令。它是预编译指令,它只是用符号常量代表一个字符串,在预编译时仅是进行字符替换,在预编译后,符号长常量就不存在了(全置换成3.1415926),对符号常量的名字是不分配存储单元的。而常变量要占用存储单元,有变量值,只是该值不改变而已。从使用的角度看,常变量具有符号常量的优点,而且使用更方便。有了常变量以后,可以不必多用符号常量。

4、标识符

在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。简单地说,标识符就是一个对象的名字。前面用到的变量名p1、p2、c、f,符号常量名PI,PRICE,函数名printf等都是标识符。

C语言规定标识符只能由字母、数字和下划线3种字符组成,且第1个字符必须为字母或下划线。下面列出的是合法的标识符,可以作为变量名:

sum,average,_total,Class,day,month,Student_name,lotus_1_2_3,BASIC,li_ling.

下面是不合法的标识符和变量名:

M.D.John,,#33,3D64,a>b

注意:编译系统将大写字母和小写字母认为是两个不同的字符。因此,sum和SUM是两个不同的变量名,同样Class和class也是两个不同的变量名,一般而言,变量名用小写字母表示,与人们日常习惯一致,以增加可读性。

搜索微信公众号【balayihuier】或扫描下方二维码关注微信公众号,资深软件工程师带你手把手撸代码,从此走上人生巅峰,迎娶白富美!