C语言中的常量-创新互联
目录
10年积累的成都网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有彭水苗族土家族免费网站建设让你可以放心的选择与我们合作。一、什么是常量
二、常量可以分为几类
字面常量:
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;
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享名称:C语言中的常量-创新互联
分享地址:http://ybzwz.com/article/dgsedd.html