我的 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... }
我的问题与我的代码的 else 语句有关.基本上,我的循环可能会根据不满足的某个条件将 myflag 的值从 false 设置为 true.永远不会将标志从真设置为假.我想知道哪种语句在性能方面更有意义,也许由于编译器优化,这个问题实际上不是问题.
myflag = true;
或
if (!myflag) myflag = true;
我通常会选择前者,因为它需要编写的代码更少.但是,我开始怀疑它是否涉及对内存的不必要写入,因此如果 myflag 已经为真,后者将阻止不必要的写入.但是,使用后者是否会因为有条件语句而需要更多时间,因此需要使用更多指令来编译代码?
或者是我想太多了……
只是为了澄清一点......我后一种情况的目的是如果变量已经为真,则不写入内存.因此,仅当变量为 false 时才写入内存.