【C语言】常量和变量

  计算机高级语言中,数据有两种表现形式:常量和变量。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修饰的标识符就是常量。
        在C语言中
  在上面的程序中我定义了一个数组arr2,但此时程序不能通过编译,编译器会报错“arr2未知的大小”。因为此处的sz虽然被const修饰,但它仍为变量,不能放在[]中。
        在C++中
  大家可以看到:在C++中,sz处没有出现下划线(提示错误),而且程序也可以通过编译。
问题解答:
  1.为什么要使用符号常量?
  解答:在对程序进行编译前,预处理器会先对符号常量进行处理,如在

             #define PAI 3.14

中,把所有的PAI置换为3.14。
  这样做的好处是:
  ⑴含义清楚,改善程序的可读性。在定义符号常量名时应考虑“见名知意”。在一个规范的程序中不提倡使用很多的常数,以免导致在检查程序时搞不清各个常数代表什么。
  ⑵当需要改变程序中多处使用的同一常量时,可以做到“一改全改”,避免了每一处去修改的麻烦,减少了程序维护的工作量。
  2.枚举有什么好处?
  解答:枚举的好处:
  ⑴枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。
  ⑵枚举使代码更清晰,允许用描述性的名称表示整数值,使人易于理解。
  以上就是这次我分享的所有内容。由于博主水平有限,其中定不乏缺点和不足,热切期望得到读者的批评和指正。

猜你喜欢

转载自blog.csdn.net/Sunshine_R9H15Chen/article/details/78305910