我正在寻找一个最小二乘法的代码,我遇到了以下几行:
static double one = 1.0;
static double p1 = 0.1;
static double p5 = 0.5;
...
Run Code Online (Sandbox Code Playgroud)
我想知道为什么有人会定义一个staticfor 1.0.pi例如,我可以理解为某些东西,但是对于诸如1.0和0.1等的微不足道的数学价值?我认为这将使代码的可读性降低,但它可能还有其他一些我缺少的好处.
那么,这些定义是否有原因?或者,如果它没有与现代代码一起使用,那么旧的编译器是否有任何理由?我知道我正在查看的代码已从FORTRAN转换为C/C++.FORTRAN中是否有任何理由?
我正在尝试将3D几何体写入二进制STL文件.以下是主程序的工作原理:
ParseSTL stl();
//generate the 3D model
std::string outfname = "test.stl";
std::ofstream outf(outfname, std::ios_base::out & std::ios_base::binary);
stl.writeBinarySTL(outf);
Run Code Online (Sandbox Code Playgroud)
而STL的作者是:
void writeBinarySTL(std::ofstream &outf)
{
char attr[2] = { 0 };
char header[80] = { 0 };
int count = 0;
outf.write(header, 80);
//count += 80;
//std::cout << "after header: file position: " << outf.tellp() << " bytes written: " << count << "\n";
//if ((int)outf.tellp() != count)
// std::cout << "something is wrong!\n";
outf.write(reinterpret_cast<char *>(&facecount), sizeof(int));
//count += sizeof(int);
//std::cout << "after …Run Code Online (Sandbox Code Playgroud) 坏消息大家,
我最近开始学习 FORTRAN 来理解代码并将其翻译为 C++(我
知道代码的作用对于这个问题并不重要,但为了提供一些背景知识,
该代码使用自适应网格上的搭配方法解决了边界值问题)。
查看代码,某些“go to”语句与“do continue”相结合
,这确实让我感到困惑。
这是一个例子:
do 100 i=1, n
C DO SOMETHING HERE
if (some condition) go to 90
C DO SOME MORE STUFF HERE
90 continue
C EVEN MORE STUFF HERE
100 continue
Run Code Online (Sandbox Code Playgroud)
我有一些 C 语言编程经验,因此我将用 C 语言编写两种解释,如下
所示,但我不确定哪一种(如果有的话!)是正确的翻译:
for(int i=1;i<=n;i++)
{
//DO SOMETHING HERE
if(some condition) continue;
//DO SOME MORE STUFF HERE
//EVEN MORE STUFF HERE
}
Run Code Online (Sandbox Code Playgroud)
或者:
for(int i=1;i<=n;i++)
{
//DO SOMETHING HERE
if(!some condition)
{
//DO SOME MORE STUFF …Run Code Online (Sandbox Code Playgroud)