如何编写一个条件来在C ++中定义一次变量

时间:2015-09-24 13:45:47

标签: c++ variables

我正在编写一个在每个循环中调用的函数。在这个函数中,我定义了一个变量

bool forceDisplacementLaw(ContactModelMechanicalState *state) {
bool max_check = false
//something here
if ((nsmax >= pbProps_->pb_ten_)) {
    max_check = true;
}
}

max_check现在将在我的函数中更改为true,我希望永远保持真实。但是,我在代码的开头定义了max_check,并再次将其初始化为false

当永久转向true时,有没有办法让它保持正确?

3 个答案:

答案 0 :(得分:4)

您可以将其定义为静态。

program_%: CFILE=path/program_%/do_it.c
                      ^^^^^^^^^^
                       This does not work

答案 1 :(得分:1)

我认为StoryTeller对你说得对。考虑

public void forward(string $actionName, string $controllerName=NULL, string $extensionName=NULL, array $arguments=NULL)

protected void redirect(string $actionName, string $controllerName=NULL, string $extensionName=NULL, array $arguments=NULL, integer $pageUid=NULL, int $delay=0, int $statusCode=303)
当首先调用f时,

int f() { static int timesCalled = 0; timesCalled++; cout << "f has been called " << timesCalled << " times.\n"; // actual work goes here } 将被初始化为0,然后在增量之后保留其值(是的,初始化仅执行一次,尽管出现!)

答案 2 :(得分:-1)

使用静态局部变量。静态变量在函数调用之间保持其值:

bool forceDisplacementLaw(ContactModelMechanicalState *state) {
    static bool max_check = false;
    //something here
    if ((nsmax >= pbProps_->pb_ten_)) {
        max_check = true;
    }
}

或者改为使用全局变量:

static bool max_check = true;
//...
bool forceDisplacementLaw(ContactModelMechanicalState *state) {
    //something here
    if ((nsmax >= pbProps_->pb_ten_)) {
        max_check = true;
    }
}