c++ - 使用 const double 获得中间结果

标签 c++ constants

我正在编写一个模拟程序,想知道在存储中间结果时使用 const double 是否有任何用处。考虑这个片段:

double DoSomeCalculation(const AcModel &model) {
   (...)
   const double V = model.GetVelocity();
   const double m = model.GetMass();
   const double cos_gamma = cos(model.GetFlightPathAngleRad());
   (...)
   return m*V*cos_gamma*Chi_dot;
}

请注意,该示例仅用于说明 - 从工程方面来看可能没有多大意义。在变量中存储例如 cos_gamma 的动机是这个余弦在 (...) 涵盖的其他表达式中多次使用,我觉得使用

时代码变得更具可读性
cos_gamma 

而不是

cos(model.GetFlightPathAngleRad())

各种表达方式。现在实际的问题是:因为我希望余弦在整个代码部分都是相同的,而且我实际上只是将它创建为占位符,为了方便起见,我倾向于将其声明为 const。关于这是好的还是坏的实践,或者它最终是否会咬我,是否有既定的意见?编译器是否使用了这些附加信息,或者我是否实际上阻碍了编译器执行有用的优化?

阿恩

最佳答案

我不确定优化部分,但我认为将其声明为const 很好。这是因为如果代码很大,那么如果有人错误地执行了中间的 cos_gamma = 1,您将得到编译器错误而不是运行时意外。

关于c++ - 使用 const double 获得中间结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904467/

相关文章:

c++ - const 引用返回和 STL vector 的问题

c++ - 运行 g++ 应用程序时出错。 (字符串加密)

c# - 如何在 C# 中创建一个常量静态字符串数组?

c++ - 接收错误 "no matching function for call to pow(double)"

c++ - 用于转换为格式化文本的轻量级 HTML 解析器?

c++ - 从 vector 的元素成员方法插入 vector 元素 destroys *this

c++ - 如何使用 libFLAC++ 将 WAV 格式转换为 FLAC

c++ - 多态类型的代理类,使用模板

c++ - 如何将指针映射公开为 const 指针映射?

javascript - 在 Javascript 中使用 if/else 定义 const