相关疑难解决方法(0)

C++:仅在未设置时设置bool值

我的C++应用程序中的代码通常会这样做:

bool myFlag = false;
while (/*some finite condition unrelated to myFlag*/) {
    if (...) {
        // statements, unrelated to myFlag
    } else {
        // set myFlag to true, perhaps only if it was false before?
    }
}
if (myFlag) {
    // Do something...
}
Run Code Online (Sandbox Code Playgroud)

我的问题与else我的代码声明有关.基本上,我的循环可以根据某个未满足的条件将myFlag的值从false设置为true.永远不会将旗帜从真假转为虚假.我想知道哪种语句在性能方面更有意义,并且可能由于编译器优化而导致此问题实际上不是问题.

myFlag = true;
Run Code Online (Sandbox Code Playgroud)

要么

if (!myFlag) myFlag = true;
Run Code Online (Sandbox Code Playgroud)

我通常会选择前者,因为它需要编写更少的代码.然而,我开始怀疑它可能涉及不必要的写入记忆,因此后者会阻止不必要的写作,如果myFlag已经是真的.但是,使用后者会花费更多时间,因为有一个条件语句,因此使用更多指令编译代码?

或许我过分思考这个......


更新1

只是澄清一下......后一种情况的目的是如果变量已经为真,则不写入内存.因此,只有在变量为false时才写入内存.

c++ boolean variable-assignment compiler-optimization conditional-statements

8
推荐指数
1
解决办法
1万
查看次数