C++实际上有两种不同的常数

2023-11-25 13:18

本文主要是介绍C++实际上有两种不同的常数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

然而,它有时是有用的,以确定变量的值,不能改变。例如,考虑在地球的重力值:9.8米/秒2。这是不可能改变任何时间很快。定义这个值作为一个常量有助于确保这个值不是意外更改的。

做一个变量不变,只是把const关键字之前或之后的变量类型,像这样:

1
2
const double gravity { 9.8 }; // preferred use of const before type
int const sidesInSquare { 4 }; // okay, but not preferred

虽然C++会接受之前或之后的类型const,我们推荐使用它之前,因为它更好的遵循标准式英语惯例在修饰符来之前被修改的对象(例如一个绿球,一球未绿色)。
const变量必须初始化,当你定义它们,然后,价值无法通过改变分配。
声明一个变量为const阻止我们无意中改变它的值:

1
2
3
4
5
std::cout << "Enter your age: ";
int age;
std::cin >> age;const int usersAge (age); // usersAge can not be changed

将函数参数常量做两件事。首先,它告诉人调用函数,函数不会改变自我价值的价值。其次,它确保功能不改变自我价值的价值。
编译时间和运行时
当你在编译你的程序的过程中,这被称为编译时间。在编译时,编译器可以确保你的代码语法正确,并将你的代码转换成目标文件。
当你在运行你的应用程序的过程中,被称为运行时。在运行时,您的程序按行执行。
Constexpr
C++实际上有两种不同的常数。
运行时常量是那些初始化值只能在运行时解析的(当你的程序正在运行的时候)。变量如usersage和自我价值以上运行时常量,因为编译器在编译时不能确定自己的价值观。usersage依靠用户输入(只能在运行时)和自我价值取决于传递给函数的值(这是在运行时才知道)。
编译时间常数是那些在编译时可以在编译时解决的初始化值(当你的程序在编译时)。上面的变量重力是一个编译时常数的例子。每当使用重力时,编译器可以简单地用“双9.8”的标识符重来替换“标识符”。
在大多数情况下,一个恒定值是否运行时或编译时间都不重要。然而,有一些奇怪的情况下,C++需要编译而不是运行时常数时间(如定义一个固定大小的数组的长度,我们将稍后)。因为一个常量的值可以是运行时或编译时,编译器必须了解哪一种常数是。
有助于消除这一情况,C++ 11引入了新的关键字constexpr,使常数必须是编译时常量:

这篇关于C++实际上有两种不同的常数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/423873

相关文章

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明