Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
4年前关闭。
Improve this question
我正在寻找一个最小二乘法的代码,并且遇到了以下几行:
我想知道为什么有人会为
那么,有这些定义的理由吗?或者,如果它不与现代代码一起使用,那么使用旧编译器有什么原因吗?我知道我正在查看的代码已从FORTRAN转换为C/C++。在FORTRAN中有什么理由吗?
像
这正是您的C++代码所做的:创建变量以将指针(或引用)传递给子例程FORTRAN样式。
当然,这不是惯用的C或C++。通常,您将按值传递
(从我的答案复制到this question的代码示例。)
想要改善这个问题吗?更新问题,以便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.0
和0.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的代码示例。)