常量的好处

2024-02-11

我知道关于常量的一大问题是,您不必遍历和更新到处使用该常量的代码。这很好,但假设您没有明确将其声明为常量。采用实际上不会更改的变量并将其设为常量有什么好处,这会节省处理和/或代码大小...等吗?

基本上我有一个程序,编译器说某个特定变量没有更改,因此可以声明为常量,我只是想知道向其中添加常量限定符有什么好处,如果没有区别,那么这种变化不会增加任何价值,因此没有必要浪费时间(同样的情况发生在不止一个地方)返回并“修复”所有这些变量。


如果您将变量声明为常量,那么优化器通常可以通过“常量折叠”消除它,从而既加快程序速度又节省空间。举个例子,考虑一下:

var int a = 5;
const int b = 7;
...
c = process(a*b);

编译器最终将创建一条将 a 乘以 7 的指令,并将其传递给“process”,将结果存储在 c 中。然而在这种情况下:

const int a = 5;
const int b = 7;
...
c = process(a*b);

编译器将简单地传递 35 进行处理,甚至不编码乘法。另外,如果编译器知道process没有副作用(即,是一个简单的计算)那么它甚至不会调用process。它只会将 c 设置为 process(35) 的返回值,从而节省了函数调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常量的好处 的相关文章

  • 如何开发像 Coffee Script 这样的编程语言?

    要开发像咖啡脚本这样的编程语言 我需要知道的初始要求是什么 它基本上有自己的语法 但在编译后会更改为另一种语言 我对此进行了谷歌搜索 但找不到正确的答案 使用基本语言指定您的语言形式语法 http en wikipedia org wiki
  • 包含常量成员的 POD 结构

    有了这个代码 struct A int i const int b The union is to verify that A is a type that can be used in a union union U A a int b
  • 俄语编程语言“Rapira”的现代实现? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有俄语 Rapira 编程语言的现代 1990 年以后 实现 维基百科没有提及 这个问题让我回想起
  • 如何以 const 形式返回指向指针列表的私有指针?

    我有一个指向指针列表的指针 作为私有变量 我还有一个 getter 它返回指向列表的指针 我需要保护它免受更改 我找不到如何使用reinterpret cast 或const cast 对此 class typeA shared ptr
  • 为什么引用某些导出的 const 变量的某些 const 变量的值为 0?

    考虑以下 我有两个导出常量 如下所示 somefile h extern const double cMyConstDouble extern const double cMyConstDouble2 and somefile cpp co
  • Windows 开箱即用支持的语言

    我被要求为一组 Windows 机器 我认为是 XP 编写一个 非常 简单的程序 如此简单以至于语言的选择并不是真正的问题 但是 我希望能够分发直接在 Windows 计算机上运行的二进制文件 脚本 而不需要预先安装任何解释器或虚拟机 我正
  • 哪种函数式编程语言在 Eclipse 中提供最好的支持?

    作为一项练习 我的团队正在考虑学习函数式编程 选择一种语言的因素之一是它在 Eclipse 中的支持 任何带有 Eclipse 插件的语言都可以 但是哪种语言提供最好的免费插件呢 额外问题 该语言的最佳在线 书籍教程 我不知道它是否是最好的
  • 具有来自包含器类的静态方法调用的 Ruby 模块

    我需要在模块中定义使用包含该模块的类中的方法的常量 module B def self included base class lt lt base CONST self find end end end class A def self
  • 数组运算符 [] 重载 const 和非 const 版本

    我接到一个任务来实现一个模板数组类 要求之一是重载 运算符 我制作了这两个常量和非常量版本 似乎工作正常 const T operator const unsigned int index const and T operator cons
  • C++“错误:将 'const std::map >' 传递为 ... 的 'this' 参数”

    使用以下代码 为简洁起见摘录 color h class color public color enum colorType black blue green cyan red magenta brown lightgray nocolor
  • 使用 C 库时 C++ 中的常量正确性

    目前我正在开发一个 C 应用程序 我希望它是 const 正确的 意思是尽可能在参数上使用 const 之类的东西 然而 这个 C 应用程序使用了一个不经常使用 const 的 C 库 我遇到的问题是 当向 C 库中的函数发送参数时 参数不
  • 对常量数组的未定义引用

    a cpp const unsigned char whatever 123 a h extern const unsigned char whatever 123 b cpp include a h unsigned char x wha
  • 用 let 或 const 声明的变量是否被提升?

    我已经使用 ES6 一段时间了 我注意到虽然用var按预期被吊起 console log typeof name undefined var name John 声明的变量let or const吊装似乎存在一些问题 console log
  • 将 __DIR__ 常量与字符串连接作为数组值,该数组值是 PHP 中的类成员

    谁能告诉我为什么这不起作用 这只是我在其他地方尝试做的事情的一个粗略的例子 stuff array key gt DIR value 但是 这会产生错误 PHP Parse error syntax error unexpected exp
  • 多个源文件中包含包含“const”的头文件

    Why does not包含定义的头文件const并被多个源文件包含会产生编译错误multiple definition const in header file h const int num 5 int x Error Multiple
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • 使用 Sphinx 时,如何记录没有文档字符串的成员?

    我正在为我发布的包编写文档 我发现您的文档越全面 人们就越容易找到您的包来使用 废话 实际上 我在充满爱心地编写代码的所有功能和细节方面获得了很多乐趣 然而 我对如何为类级变量编写与 Sphinx 兼容的文档感到完全困惑 特别是 我有一些e
  • C++ 静态初始化顺序失败

    我目前正在学习C 但遇到了一些麻烦 我开发了一个程序 使用了很多 define 但我想用static const相反 碰撞 类型 范围 所以 我现在有类似的东西 file1 hpp class A public static const s
  • C中有const吗?

    这个问题可能很幼稚 但是 有没有constC 中的关键字 从哪个版本开始 之间有任何语义和 或句法差异吗const在 C 和 C 中 C 和 C 之间在语法上没有差异const关键字 除了一个相当晦涩的关键字 在 C 中 自 C99 起 您
  • 如何访问 Angularjs 模板中的常量

    如何将公共js文件中定义的常量访问到不同模块的模板中 如果我在 MainModule js 中定义了一个这样的常量 该常量包含在主 html 文件的开头 gt var myApp angular module AC gt myApp con

随机推荐