生活中有一些是可变的量(比如你的年龄,身高,体重,对象)
还有一些不变的量(比如圆周率,性别,身份证号码)[哎,这里你说性别可变啊,我们只能笑一下,哈哈]
常量的定义
常量就是一个不变的量(比如圆周率,性别,身份证号码)
c语言中的常量和变量的定义的形式有所差异。
常量的分类
c语言中的常量分为以下以下几种:
- 1.字面常量
- 2.const 修饰的常变量
- 3.#define 定义的标识符常量
- 4.枚举常量
我们来演示一下
字面常量
字面常量,就是字面上就可以看出来的常量
int main() { //字面常量演示 3.14;//小数 1000;//整数 'w';//字符 "abc";字符串 return 0; }
const修饰的常变量
#define _crt_secure_no_warnings #include<stdio.h>//使用printf记得加这条代码 int main() { //const修饰的常变量演示 int a=100;//我们等一会儿会改变它 a=10; printf("%d",a); return 0; }
运行结果:
10
当我们在int a=100前加一个const来修饰
#define _crt_secure_no_warnings #include<stdio.h> int main() { //const修饰的常变量演示 const int a=100;//在这儿 a=10; printf("%d",a); return 0; }
运行的结果:
运行错误,无实际输出
我们可以知道,const如果修饰一个变量,再给变量换一个值是不被允许的,相当于一个常量,但它还有变量的属性,所以我们就叫它是const 修饰的常变量
为什么说它具有变量属性呢?
我们来证明一下:
再新了解一个东西,数组,当我们来写代码的时候,有时候需要写很多的变量,很麻烦,这时候我们使用数组arr[ ],(a[ ],hin[ ]都随便,自己起一个名),在数组的[ ]中只能放常量,比如arr[5],相当于你直接定义了5个变量,里面是不能放变量的,根据这个原理我们来证明一下const 修饰的常变量是否具有变量属性
#define _crt_secure_no_warnings #include<stdio.h> int main() { const int a = 100; int arr[10] = {0}; return 0; }
可正常运行
#define _crt_secure_no_warnings #include<stdio.h> int main() { const int a = 100; int arr[a] = {0}; return 0; }
运行结果:
出现了错误,说明const 修饰的常变量具有变量属性
我有一个大佬(我认为的大佬,哈哈哈)是这样理解的:假设变量是一个空间,常量是一个实际值,变量用来容纳常量,const只是锁定了值,但是并不是把空间变成数值
#define 定义的标识符常量
#define _crt_secure_no_warnings #include<stdio.h> #define max 100//here int main() { printf("%dn",max); int a=max; printf("%dn",a); return 0; }
运行的结果:
100
100
可以看出来,max被定义为了100,无论是直接打印还是给变量一个值都可以,想用的时候就可以拿出来使用,这个max就是标识符常量,也就是#define 定义的标识符常量。(#define也是可以定义一个字符串的,不局限于数字)
枚举常量
我生活中一些值是可以一一列举出来的,比如性别,我们初步来了解一下,毕竟只是初始c语言,
#include <stdio.h> enum sex { male,//男 female,//女 secret//不确定 }; //enum sex未来的可能取值就是male,female,secret,它们三个就是枚举常量 int main() { //枚举常量演示 printf("%dn", male); printf("%dn", female); printf("%dn", secret); //注:枚举常量的默认是从0开始,依次向下递增1的
注意,这里enum sex里面三个枚举常量并不开辟空间,而且也是不能改变的,改变就会报错
到此这篇关于适合初学者的c语言常量类型的讲解的文章就介绍到这了,更多相关c语言 常量类型内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!
需要了解更多c/c++开发分享适合初学者的C语言常量类型的讲解,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/1076799.html