常量总结(字面常量 、 Const修饰的常变量 、 #define定义的标识符常量 、枚举常量)

本文详细介绍了C语言中的四种常量类型:字面量、const修饰的常变量、#define定义的标识符常量和枚举常量。通过实例解析了它们的用法和特点,包括const变量的不可变性和#define在定义数组大小中的作用。同时,枚举常量提供了一种更加简洁的方式来表示整数常量。
摘要由CSDN通过智能技术生成

下面我用比较通俗易懂的方法来一起简单总结一下常量的知识。

常量

C语言中的常量分为以下几种:

  • 字面常量
  • Const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量

字面常量

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	1234;//整型常量
	3.14;//浮点型常量
	"abcde";//字符串常量
	'e';//字符常量
	//这些都叫字面常量
	return 0;
}

Const修饰的常变量

const——常属性
如下
我这样写,n的值可以更改

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 1;
	n = 2;
	printf("%d", n);
	return 0;
}

n由1变成了2;
但我如果在int前加一个const,

int main()
{
	const int n = 1;//初始化后不能再被更改
	n = 2;
	printf("%d", n);
	return 0;
}

下面的错误列表则会显示
请添加图片描述
说明n被const修饰后其值不能改变。
那么n完全就是常量的样子了呀,为什么会还称它是常变量呢?
我们来看下面这个例子,证明它是一个变量:

请添加图片描述
这里,可以看到,下面的错误列表显示24行代码里的m必须是一个常量,那么反过来,也就表示,m在这里是一个变量。
说明一下:

我用的是VS2019,在C99标准之前,数组的大小只能是常量,VS2019对C99有些部分不支持。不支持变长数组(用整型变量或表达式声明或定义的数组),所以这里报错了。

现在,我在int前面加上一个const,结果如下
请添加图片描述
说明此时m虽然被const修饰,但m仍是一个变量。

#define定义的标识符常量

#include<stdio.h>
#define MAX 10
int main()
{
	printf("%d\n", MAX);
	return 0;
}

输出10.
现在,我要改变MAX的值

#include<stdio.h>
#define MAX 10
int main()
{
	printf("%d\n", MAX);
	MAX=20;
	printf("%d\n", MAX);//MAX不能修改;
	return 0;
}

报错,证明MAX的值不能改变。
因为MAX被标识成了常量。
所以此时,MAX就可以做为数组大小

#include<stdio.h>
#define MAX 5
int main()
{
	int arr[MAX] = { 0 };
	return 0;
}

这样写,就没有任何问题了。

枚举常量

enum——枚举关键字
枚举语法的定义格式为:

enum 枚举名 {枚举元素1,枚举元素2,……};//注意后面有一个分号

举个栗子,例如:一周有 7 天,如果不用枚举,我们就需要使用 #define 来给每个整数定义一个别名:

#define MON  1
#define TUE  2
#define WED  3
#define THU  4
#define FRI  5
#define SAT  6
#define SUN  7

如果用枚举的方式,如下:

enum DAY
{
	MON=1, TUE, WED, THU, FRI, SAT, SUN//里面这些称为枚举常量
};

看起来是不是简洁很多。

注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

我们也可以在定义枚举类型时改变枚举元素的值:

enum DAY
{
	MON, TUE=2, WED, THU, FRI, SAT, SUN
};

没有指定值的枚举元素,其值为前一元素加 1。也就说MON的值为 0,THU的值为 2,WED的值为3,THU 的值为 4,FRI 的值为 5,依次类推。

上面我们只是声明了枚举类型,下面我们要来定义枚举变量。

可以通过以下的方式来定义枚举变量

  • 1、先定义枚举类型,再定义枚举变量day
enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
  • 2、在定义枚举类型的同时定义枚举变量day
enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
  • 3、省略枚举名称,直接定义枚举变量
enum
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;

来个实例:

#include <stdio.h>
 
enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
 
int main()
{
    enum DAY day;
    day = THU;
    printf("%d",day);
    return 0;
}

输出为4.

以上为我整理的有关常量的相关知识,由于我的水平有限,如有错误,还请大家多多指出更正。
记得点赞关注支持我哦。
请添加图片描述

让我们一起加油一起成长!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值