C语言中的四种常量详解

目录
  • 1、字面常量
  • 2、const修饰的常变量
  • 3、#define定义的标识符常量
  • 4、枚举常量
  • 总结

1、字面常量

字面常量正如我们从字面上简单理解的那样,是最简单的常量,下面给出例子帮助大家理解:

//1.字面常量
100;   //整型常量
3.14;   //浮点常量
"abfdj";   //字符串型常量
'w';   //字符型常量
int a[100];   //其中的100也是常量,此处需注意,[]中的数字必须是常量,后面我们会用到这个

2、const修饰的常变量

const修饰的变量具有常量的某些特征,其中最主要的特征就是const修饰的变量不可被改变,但注意,被const修饰的变量本质上仍是变量,只是不可被改变,如同被static修饰的局部变量生命周期发生改变,但是作用域却不发生改变一样,本质上仍是局部变量,作用域仍在所定义的代码块内,事实上,在计算机中还有一些诸如此类的例子,此处不再一一列举,下面让我们来了解一下这种变量吧。

此处就可以看出被const修饰的变量不可再被修改。下面将给大家展示一下被const修饰后的变量本质并未发生改变。

上面我们已经提及到,数组的[]内必须是常量,我们在把const修饰的变量a放入[]内时i,编译器会报错,所以const修饰的变量本质上仍是变量。

3、#define定义的标识符常量

由此可以得到,#define修饰的是不可修改的常量(第一个图可以看出不可修改,图二可以看出是常量,至于具体的原因,以后#宏定义为何会这样,以后有机会会给大家作出相应的解释,目前大家先记住即可。

注意:一般#define 定义的常量名字(实际上这并不是我们通常了解的定义变量的那种定义,是一种宏定义,以后有机会会给大家讲,今天不作详细的阐述)用大写字母表示,理论上可以用小写,但作为一个优秀的程序员,相信大家能够做到这一点,虽然只是一个小小的细节,但也能够体现出一个程序员的自我修养,希望大家能够注意到。

4、枚举常量

从上面可以看出,枚举类型确实是常量,但需要注意两点,第一点,枚举类型的数据值一般是大写,如图中的MALEFEMALESECRET,虽然说理论上也可以小写,但具体为什么我在此强调,原因同上;第二点,枚举类型定义时,{}内的分隔符是逗号,并且一般会像图中一样放在不用的行内,可以使代码看起来更简洁。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 详解C语言中的符号常量、变量与算术表达式

    C语言中的符号常量 在结束讨论温度转换程序前,我们再来看一下符号常量.在程序中使用 300.20 等类似的"幻数"并不是一个好习惯,它们几乎无法向以后阅读该程序的人提供什么信息,而且使程序的修改变得更加困难.处理这种幻数的一种方法是赋予它们有意义的名字.#define 指令可以把符号名(或称为符号常量)定义为一个特定的字符串: #define 名字 替换文本 在该定义之后,程序中出现的所有在 #define 中定义的名字(既没有用引号引起来,也不是其它名字的一部分)都将用相应的替换文本

  • C语言 常量详解及示例代码

    C 常量 常量是固定值,在程序执行期间不会改变.这些固定的值,又叫做字面量. 常量可以是任何的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 常量就像是常规的变量,只不过常量的值在定义后不能进行修改. 整数常量 整数常量可以是十进制.八进制或十六进制的常量.前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制. 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long).

  • C语言的变量与常量 字符字符串与转义字符详解

    目录 一.变量 1.1定义变量的方法 1.2变量的分类 1.3变量的使用 二.常量 2.1字面常量 2.2 const修饰的常变量 2.3#define定义的标识符常量 2.4 枚举常量 三.字符和字符串 3.1 定义 3.2字符串的应用 3.3转义字符 四.注释 总结 一.变量 1.1定义变量的方法 如图中所示,变量可被定义为各种数据类型,如int 整型 char字符数据类型,short短整型,float单精度浮点数,double双精度浮点数等等.一般在变量定义后,需给变量赋值,如图中对所有变

  • 详解C语言中的常量指针和指针常量

    概述 对于新手来说,指针在c语言里总是一个非常难以理解的概念.在这篇文章中,我们将解释常量指针,指针常量,const pointer to const(ps:楼主以为这可以翻译成指向常量的常量指针)的区别 常量指针 让我们先来理解什么是常量指针.常量指针是指指针指向的地址是常量.换句话说,一旦常量指针指向了一个变量,你不能让该常量指针指向其他变量了 常量指针的声明方法如下: <type of pointer> * const <name of pointer> 常量指针声明示例:

  • C语言中的常量详解

    目录 C语言中的常量 字面常量 #define定义的标识符常量 枚举常量 C语言中的常量 C编程中的常量是一些固定的值,它在整个程序运行过程中无法被改变. 字面常量 字面常量是直接写出的固定值,它包含C语言中可用的数据类型,可分为整型常量,字符常量等.如:9.9,"hello"等就属于这一类常量. ##const修饰的常变量 有的时候我们希望定义这么一种变量:值不能被修改,在整个作用域中都维持原值.为了满足用户需求,C语言标准提供了const关键字.在定义变量的同时,在变量名之前加上c

  • C语言中的四种常量详解

    目录 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 4.枚举常量 总结 1.字面常量 字面常量正如我们从字面上简单理解的那样,是最简单的常量,下面给出例子帮助大家理解: //1.字面常量 100; //整型常量 3.14; //浮点常量 "abfdj"; //字符串型常量 'w'; //字符型常量 int a[100]; //其中的100也是常量,此处需注意,[]中的数字必须是常量,后面我们会用到这个 2.const修饰的常变量 const修饰的变量具有

  • Java中遍历ConcurrentHashMap的四种方式详解

    这篇文章主要介绍了Java中遍历ConcurrentHashMap的四种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方式一:在for-each循环中使用entries来遍历 System.out.println("方式一:在for-each循环中使用entries来遍历");for (Map.Entry<String, String> entry: map.entrySet()) { System.out.pr

  • Javaweb中Request获取表单数据的四种方法详解

    目录 表单代码 request.getParamter(String name);通过name获取值 request.getParamterValues(String name);通过name获取value值(一般用于复选框获取值) 代码片段 request.getParameterNames();直接获取表单所有对象的name值,返回值是枚举集合 request.getParameterMap();直接获取表单所有对象的name值以及数据 表单代码 <!DOCTYPE html> <h

  • JS中不应该使用箭头函数的四种情况详解

    目录 箭头函数的一些缺点 1.不支持参数对象 2.无法通过apply.call.bind来改变this指针 什么时候不能使用箭头功能 1.请不要在构造函数中使用箭头函数 2.请不要在点击事件中操作this 3.请不要在对象的方法中使用箭头函数. 4.请不要在原型链中使用箭头函数 箭头函数给我们的工作带来了极大的方便,但是它们有什么缺点呢?我们应该一直使用箭头函数吗?我们应该在哪些场景中停止使用箭头函数? 现在,我们开始吧. 箭头函数的一些缺点 1.不支持参数对象 在箭头函数中,我们不能像在普通函

  • Kotlin 语言中调用 JavaScript 方法实例详解

    Kotlin 语言中调用 JavaScript 方法实例详解 Kotlin 已被设计为能够与 Java 平台轻松互操作.它将 Java 类视为 Kotlin 类,并且 Java 也将 Kotlin 类视为 Java 类.但是,JavaScript 是一种动态类型语言,这意味着它不会在编译期检查类型.你可以通过动态类型在 Kotlin 中自由地与 JavaScript 交流,但是如果你想要 Kotlin 类型系统的全部威力 ,你可以为 JavaScript 库创建 Kotlin 头文件. 内联 J

  • PHP定义字符串的四种方式详解

    1.简介 在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用. 我们在使用php进行开发的时候,大多数使用双引号.单引号进行定义字符串.既然有这两种方式,那么他们之间肯定是有区别的. 并且,除了单双引号定义字符串这两种方式外,php还增加了heredoc和nowdoc这两种语法糖进行补充. 2.单引号与双引号 2.1.单引号 在单引号中,任何特殊字符都会按原样输出[除\\.\'将会被转义输出] eg. <?php $var = 'this is a var!'; echo

  • C语言中指针和数组试题详解分析

    目录 数组题: 程序一(一维数组): 字符数组 程序二(字符数组): 程序三(字符数组): 程序四(字符数组): 程序五(字符数组): 二维数组 程序六( 二维数组): 指针题 程序七( 指针): 程序八( 指针): 程序九( 指针): 程序十( 指针): 程序十( 图): 程序十一( 指针): 程序十二( 指针): 程序十三( 指针): 指针 和 数组 试题解析 小编,在这里想说一下,c语言的最后一节 C预处理,可能还需要一些时间,因为小编,昨天才下载了虚拟机 和 linux 系统,还没开始安

  • Python 非极大值抑制(NMS)的四种实现详解

    目录 一.  几点说明 1. 简单说明Cython: 2. 简单介绍NMS: 二.  四种方法实现 1. 纯python实现:nms_py.py 2.直接利用Cython模块编译:nms_py1.pyx 3. 更改变量定义后再利用Cython模块编译:nms_py2.pyx 4. 在方法3的基础上利用GPU:gpu_nms.pyx 方法1:纯python语言实现:简介方便.速度慢 方法2:直接利用Cython模块编译 方法3:先将全部变量定义为静态类型,再利用Cython模块编译 方法4:在方法

  • Java 不使用第三方变量交换两个变量值的四种方法详解

    目录 变量本身交换数值 算术运算 指针地址操作 位运算 简单总结 哈喽,大家好,我是阿Q.前几天有个小伙伴去面试,被面试官的一个问题劝退了:请说出几种不使用第三方变量交换两个变量值的方法. 问题有点绕,好不容易缕清了面试官的问题,却发现答不上来.一时间尴尬无比,只能硬着头皮说不会. 遇到交换变量值的问题,通常我们的做法是:定义一个新的变量,借助它完成交换. 代码如下: t = a; a = b; b = t; 但问题的重点是"不使用第三方变量",那就变得"可爱"起来

  • Go语言中的数据竞争模式详解

    目录 前言 Go在goroutine中通过引用来透明地捕获自由变量 切片会产生难以诊断的数据竞争 并发访问Go内置的.不安全的线程映射会导致频繁的数据竞争 Go开发人员常在pass-by-value时犯错并导致non-trivial的数据竞争 消息传递(通道)和共享内存的混合使用使代码变得复杂且易受数据竞争的影响 Add和Done方法的错误放置会导致数据竞争 并发运行测试会导致产品或测试代码中的数据竞争 小结 前言 本文主要基于在Uber的Go monorepo中发现的各种数据竞争模式,分析了其

随机推荐