C语言中的5种常量以及它们的不同之处

原标题 | 5 Types of Constants in C and How they’re Different from Literals 作者 | DATAFLAIR TEAM 译者 | Alan、通夜 注:本文的相关链接请访问文末【阅读原文】

你有没有想过,什么是C常量?为什么它们是编程世界的重要组成部分?我们已经得到了你所有问题的答案。C编程中的常量只是一些固定的值,在整个程序运行过程中都不能改变。这些固定值也称为字面量。

在外行人的语言中,我们可以交替使用常量和字面量。但是,我们将在本教程中强调这两者之间的关键区别。

在我们开始之前,你必须了解C语言中的变量。

现在,让我们通过考虑以下问题来认识常量和字面量在C编程语言中的重要性: 在某些情况下变量的值不会改变,比如说,近似等于3.14159的pi值是常量,它永远不会改变,这是一个普遍的事实。我们可能会遇到一些情况,在这些情况下,我们需要pi来进行数学计算。类似地,我们可以根据方便程度为多个变量分配常量。

1. C编程中的变量和常量

值得注意的是,变量在编程和数学中有不同的含义。变量只是一个我们可以存储在计算机内存中的值。我们可以在运行时轻松地更改它的值。与之相反,常量在整个程序运行过程中都不会改变它们的值。常量可以包含C语言中可用的任何数据类型。

2. 声明或定义常量

我们可以通过两种方式将C常量赋值给变量:

  1. 使用#define,一个预处理器指令:我们已经在预处理器中详细讨论了#define
  2. 使用关键字const:它类似于变量声明,只是我们应该在它之前添加关键字“const”。一旦我们声明了常量,就给它赋值是很重要的。

了解更多关于C语言的预处理程序,看看它是否有用?

下面是一个C语言的程序,它演示了当我们试图修改一个常量的值时会发生什么:

输出:

3. C语言中的常量和字面量

正如前面所讨论的,常量和字面量可以互换使用,但是这两者之间有一些细微的区

让我们考虑一个简单的例子来更好地理解它。

在印度,法定投票年龄是18岁。

因此,我们定义

const voting_age = 18;

在这里,18是一个字面量,一个表示自身字面意思的值,而常量可以被认为是一种数据类型,它可以代替字面量来增强代码的功能。

现在,我们希望打印信息,“你可以投票!”给年龄大于或等于18岁的人士。

因此,我们首先将用户的年龄作为输入,给出条件:

if (age >= voting_age)
{
printf(“ You are allowed to vote! ”);
}

这里,标识符voting_age是常量。

为了进一步阅读,你应该了解C语言中的数据类型。

4. C语言中常量的类型

在C语言中,根据数据类型的不同,有5种不同类型的常量:

4.1 整型常量

顾名思义,整数常量是一个具有固定值的整数,也就是说,它不能具有像10、-8、2019这样的小数值。

比如:

const long float pi = 3.14159;

const signed int limit = 20;

我们可以使用U和L后缀的不同组合来分别表示无符号修饰语和长修饰语,但要记住只能同时用它们其中一个。

我们可以进一步将其分为三类,即:

  • 十进制数制常数:以10为基数。(0到9).例如,55 ,-20 ,1。在十进制数字系统中,不使用前缀。
  • 八进制数系统常数:基数为8。(0到7).例如,034 ,087 ,011。在八进制数系统中,0用作前缀。
  • 十六进制数制常数:以16为基数。(0到9,A到F)在十六进制数制中,用0x作为前缀。C语言提供了使用大写或小写字母表示十六进制数字的条件。

4.2 浮点或实数

我们使用浮点常量来表示数轴上的所有实数,包括所有的小数。我们可以用两种方式来表示:

  • 小数形式:包含小数点(.)是强制性的。比如2.0, 5.98 ,-7.23。
  • 指数形式:必须包含带符号的指数(e或E)。例如,万有引力常数G = 6.67 x 10-11表示为6.67e-11或6.67E-11。

4.3 字符常量

字符常量用于为字符分配固定值,包括字母和数字或用单引号(' ')括起来的特殊符号。

每个字符都与其特定的数值ASCII(美国信息交换标准代码)值相关联。

除了这些值之外,C语言中还有一个称为转义序列的集合。

例如,'+ ',' A ', ' d '。

4.4 字符串常量

字符串常量是由一对固定的双引号("")包围的一组字符。

例如,"DataFlair","Hello world!"

4.5 枚举常量

枚举常量是在C语言中用户自定义的数据类型,每个成员赋予一个整型常量。

例如,

enum rainbow = {Violet, Indigo, Blue, Green, Yellow, Orange, Red}

枚举常量rainbow的整数如下:

Violet:0

Indigo:1

Blue:2

Green:3

Yellow:4

Orange:5

Red:6

下面是一段C代码,阐述了一些常量的用法:

屏幕上的代码:

输出:

5. 总结

在这篇教程中,我们讨论了C语言中变量和常量的区别。然后我们进一步细致的讨论了如何定义C语言中常量或字符,以及其他可用的常量类型。在完成本教程之后,你已经充分掌握了C语言的常量和字符的知识。

本文编辑:王立鱼

英语原文:https://data-flair.training/blogs/constants-in-c-and-c-plus-plus/

想要继续查看该篇文章相关链接和参考文献?

点击底部【阅读原文】即可访问:

https://ai.yanxishe.com/page/TextTranslation/1805

本文分享自微信公众号 - AI研习社(okweiwu)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏浩Coding

小白Linux入门--入门篇(二):Linux下的shell编程入门

我们在Linux下编程,不可避免的会用到shell编程,编写一些简单的shell脚本可以实现很多使用的功能,比如我们微信公众号需要用到的开机tomcat和n...

10130
来自专栏程序员互动联盟

Go语言开发,月薪如何达到3万?

一种编程值多少钱除了自身的技术能力之外,主要还是看市场对于这种编程语言的需求,现在很多的招聘单位对于go语言的岗位上薪资都在3万以上,但是具体看细节要求除了对于...

21320
来自专栏浩Coding

编程知识科普--(2)什么是计算机编程中的低级语言和高级语言

我们常常听到高级语言,低级语言等等,但是只是一知半解,比如Java和C等等是高级语言,而汇编是低级语言,那么他们之间的区别是什么呢,我从网上总结了一些观点,...

15540
来自专栏数据挖掘

【机器学习】算法原理详细推导与实现(二):逻辑回归 logistic函数逻辑回归鸢尾花分类

在上一篇算法中,线性回归实际上是 连续型 的结果,即 \(y\in R\) ,而逻辑回归的 \(y\) 是离散型,只能取两个值 \(y\in \{0,1\}\)...

18330
来自专栏嵌入式大杂烩

【C语言笔记】函数参数压栈的顺序?

按照日常习惯来看,C语言的函数参数压栈顺序是从左到右吧?但是事实却是相反的,C语言函数参数压栈顺序是从右到左的。下面看一个程序:

20220
来自专栏达达前端

第43节:Java学前要点

学习Java,有人推荐去培训,有人说没用,其实有钱的,不知道如何学,或者逼不得已去的就可以,也有人自己为了不花这些钱,而选择自学,我觉得也行。

10860
来自专栏音视频技术

NEON技术如何实现移动端视频高效解码AV1?

https://medium.com/@ewoutterhoeven/how-arms-neon-enables-efficient-av1-decoding-...

13830
来自专栏奔跑的键盘侠

不会点儿编程的你,正在失去职场竞争力

蔡康永在《奇葩说5》中说过这样一句话:快乐仰仗外来的东西而喜悦发自内心,我们小时候很容易快乐,我们第一次吃到冰淇淋,第一次滑冰、看电影,这些都是外来的东西给我们...

12010
来自专栏程序员的知识天地

Python奇技淫巧

本文用作记录,在使用python过程中遇到的一些奇技淫巧,有些代码是本人所写,有些则是python内置函数,有些则取之互联网。在此记录,只为备份以及遗忘时方便查...

29530
来自专栏前端加油站

ES6知识库汇总三

版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

9850

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励