计算机高级语言中,数据有两种表现形式:常量和变量。C语言是计算机高级语言之一,今天我们一起来看看C语言中的常量和变量。
一、常量
⒈定义:在程序运行过程中,其值不能改变的量。比如在生活中,性别、身份证号码、圆周率……这些都是常量。
⒉分类:
⑴整型常量:如20,0,-9等均是整型常量。
⑵实型常量:如0.34,10.0,12.3e3(代表12.34×10³)等。
⑶字符常量:
①普通字符,即由单引号括起来的一个字符,如'a','?','4'等。特别注意的是:字符常量在计算机中并不是以字符本身的形式存储的,而是以其ASCII码存储,‘a’的ASCII码值为97,于是在存储单元中存放的是97的二进制代码。
②转义字符:以字符\开头的字符序列。这种字符会将“\”后面的字符转换成另外的意义,如‘\n’表示“换行”,‘\a’表示“警告”,‘\ddd(三位八进制数)’的字符值为与该八进制码对应的ASCII字符。
⑷字符串常量:它指双引号中的所有字符,如“sust”,"china","246"。
⑸符号常量:用#define指令,指定用一个符号名称代表一个常量。如:
#define PAI 3.14//行末没有分号
其中,PAI称为一个标识符,为了与变量名相区别,习惯上符号常量用大写表示。在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。在C语言中,规定:标识符只能由字母、数字和下划线三种字符组成,且第一个字符不能为数字。
注意:符号常量不占内存,只是一个临时符号,在预编译后这个符号就不在了,所以不能对符号常量赋以新值。
问题思考1:为什么要使用符号常量?
⑹枚举常量:枚举关键字为enum。
声明枚举类型的一般形式为
enum[枚举名]{枚举元素列表};
代码如下:
#include <stdio.h>
enum Sex//声明了一个枚举类型enum Sex
{
MALE,
FEMALE,
SECRET
};//此处的MALE,FEMALE,SECRET都是枚举常量(枚举元素),不能对枚举元素赋值
int main()
{
printf("%d\n", MALE);//输出0
printf("%d\n", FEMALE);//输出1
printf("%d\n", SECRET);//输出2
return 0;
}
输出结果:
也可以不声明有名字的枚举类型,而直接定义枚举变量,如:
enum{ mon, tue, wed, thu, fri, sat, sun }workday, weekday;
说明:每一个枚举元素都代表一个整数,C语言编译器按定义时的顺序默认它们的值为0,1,2,3……
问题思考2:枚举有什么好处?
二、变量
⒈定义:在程序运行过程中,其值可以发生改变的量。如身高,体重,成绩,年龄,薪资等。
⒉特点:变量必须先定义,后使用。
⒊命名规则:变量名是标识符的一种,便要遵循标识符的命名规则,即只能由字母、数字和下划线三种字符组成,且第一个字符不能为数字。
⒋常变量:用const修饰的变量。如:
const int a = 10;//a被定义为一个整型变量,其值为10,而且在变量存在期间其值不可改变
注意:在C语言中,当const 修饰一个标识符的时候我们说,这个标识符依然是一个变量,但是它具有常属性,有类型,占存储单元,不能被直接改变。在C++语言中,const修饰的标识符就是常量。
在上面的程序中我定义了一个数组arr2,但此时程序不能通过编译,编译器会报错“arr2未知的大小”。因为此处的sz虽然被const修饰,但它仍为变量,不能放在[]中。
大家可以看到:在C++中,sz处没有出现下划线(提示错误),而且程序也可以通过编译。
问题解答:
1.为什么要使用符号常量?
解答:在对程序进行编译前,预处理器会先对符号常量进行处理,如在
#define PAI 3.14
中,把所有的PAI置换为3.14。
这样做的好处是:
⑴含义清楚,改善程序的可读性。在定义符号常量名时应考虑“见名知意”。在一个规范的程序中不提倡使用很多的常数,以免导致在检查程序时搞不清各个常数代表什么。
⑵当需要改变程序中多处使用的同一常量时,可以做到“一改全改”,避免了每一处去修改的麻烦,减少了程序维护的工作量。
2.枚举有什么好处?
解答:枚举的好处:
⑴枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。
⑵枚举使代码更清晰,允许用描述性的名称表示整数值,使人易于理解。
以上就是这次我分享的所有内容。由于博主水平有限,其中定不乏缺点和不足,热切期望得到读者的批评和指正。