C语言中的常量

目录

一、什么是常量

二、常量可以分为几类

字面常量:

const修饰的常变量:

 #define定义的标识符常量

枚举常量


一、什么是常量

        在生活中,我们常用的量分为两种,一个是变量,一个是常量;

        变量即为可变的量

        同理,常量即为不可变化的量;在数学中,常量是一个反应一个实物相对静止状态的量;

        在c语言中也是如此,常量在整个程序的运行过程中不可被改变。

        在程序中恒定不变的量即为常量。

二、常量可以分为几类

        字面常量

        const修饰的常变量

        #define定义的标志符常量

        枚举常量

字面常量:

        字面常量就是它字面上就是一个具体的数据值。

        字面常量也有分为整型字面常量、浮点型常量、字符型常量等等。

int main()
{

100;
'w';
3.14159;
6;

return 0 ;
}

        该代码中 100 ,6 为整型字面常量;'w' 为字符型字面常量 ;3.14159 为浮点型字面常量;


const修饰的常变量:

int main()
{
    int i = 100;  //此处i为变量
    i = 20;       //i可以重新赋值
//------------------------------
const int a  =100;//此时a被const修饰,具有常属性
    a = 20;       //a具有常属性,不能被改变
                  //所以在运行下面的代码时程序会报错
return 0;
}

        在下面的代码中,a为变量,但是在const修饰之后,具有常属性;所以a不能被重新赋值,即a不能被改变,称为const修饰的常变量

              ——  但是为什么是常变量而不是常量呢??

int main()
{
const int pu = 0;
    int arr[pu] = {};
return 0 ;
}

带着疑惑我们来看,当运行这段代码时,程序会报错;

在不支持C99的编译器中,数组只能使用常量,且不能使用变量;

(在支持C99的编译器引入了“变长数组”的概念,即变长数组的大小是可以使用变量来指定的,但是数据不能初始化)

 从这里就可以得知,pu被const修饰之后仍是变量,只是具有了常属性,

故称为“const修饰的常变量”。


 #define定义的标识符常量

        在c语言中,可以用#define来定义一个标识符用来表示一个常量

#define MA_X 1000         //定义整型常量MA_X,且数值为1000
int main()
{

#define SUG_EST "often"   //同理,SUG_EST也为常量,值为"often"

#define PI 3.14159        //......

return 0 ;
}

在上列代码中,MA_X ,SUG_EST,PI都为一个标识符,用来表示一个常量。

凡是以#开头的,都被称为预处理指令,也被称为预编译;预编译与编译不同,预编译是编译前的处理。

#define定义的标识符常量后不加 ' ; '  


枚举常量

        在中文意思中,枚举的意思为一一列举

        在C语言中也是一样,枚举常量即为一一列举的常量。在生活中有许多有意义的数据,例如一个人的性别,有男,有女,或者保密;一周有七天,周一、周二......周日等等。

而我们要在c语言中表示这些特殊意义的数据的时候,就可以用到枚举常量(ENUM)

enum Sex
{
    MALE,
    FEMALE, //每个数据中间应用,隔开
    SECRET

};    //此处的分号不可缺少

在这里我们涉及到一个新的关键词,叫做 enum -- 枚举数据类型

在上段代码中 “Sex” 即为所定义枚举类型的名字

MALE , FEMALE , SECRET即为这个枚举类型的未来可能取值

当以整型类型打印这个枚举常量的时候,打印出来的数据为0,1,2;

枚举常量的初始默认值从0开始

同时,也可以给枚举常量赋初始默认值

再给枚举常量赋初始默认值后,该枚举常量的默认值会从所赋的值开始算。

枚举常量为常量,所以也可以将它的值赋给一个变量

enum Sex
{
MALE = 5,
FEMALE,
SERCRT
}
int main()
{

enum Sex sex = MALE; //sex即为创建的变量

return 0 ;
}

        该处若是打印sex,打印结果为5;

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dio夹心小面包

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值