小编tri*_*e_r的帖子

为什么使用静态"常量"而不是实际值?

我正在寻找一个最小二乘法的代码,我遇到了以下几行:

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中是否有任何理由?

c c++

8
推荐指数
4
解决办法
651
查看次数

当写入二进制文件时,`std :: ofstream :: write`有时会写入比它应该多的字节

我正在尝试将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)

c++ file-io binaryfiles

3
推荐指数
1
解决办法
1159
查看次数

FORTRAN 中“do-Continue”和“Go to-Continue”的混淆

坏消息大家,

我最近开始学习 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)

fortran77 do-loops

0
推荐指数
1
解决办法
9977
查看次数

标签 统计

c++ ×2

binaryfiles ×1

c ×1

do-loops ×1

file-io ×1

fortran77 ×1