Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

4年前关闭。



Improve this question




我正在寻找一个最小二乘法的代码,并且遇到了以下几行:
static double one = 1.0;
static double p1 = 0.1;
static double p5 = 0.5;
...

我想知道为什么有人会为static定义一个1.0。我可以理解,例如,对于pi有一些东西,但是对于诸如1.00.1等琐碎的数学值呢?我认为这将使代码的可读性降低,但它可能还有我所缺少的其他好处。

那么,有这些定义的理由吗?或者,如果它不与现代代码一起使用,那么使用旧编译器有什么原因吗?我知道我正在查看的代码已从FORTRAN转换为C/C++。在FORTRAN中有什么理由吗?

最佳答案



FORTRAN对所有子例程参数使用按引用传递。但是,与其他具有传递引用的语言不同,它仍然允许您将“rvalues”作为参数传递。在幕后,FORTRAN编译器将代码转换为:

CALL SUBFOO(X + Y, 4)


TEMP1 = X + Y
TEMP2 = 4
CALL SUBFOO(TEMP1, TEMP2)

这正是您的C++代码所做的:创建变量以将指针(或引用)传递给子例程FORTRAN样式。

当然,这不是惯用的C或C++。通常,您将按值传递double

(从我的答案复制到this question的代码示例。)

10-08 08:07
查看更多