我正在编写一个模拟程序,想知道在存储中间结果时使用 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/