相关疑难解决方法(0)

分配前进行冗余比较和“如果”

这是示例:

if(value != ageValue) {
  ageValue = value;
}
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果我们将一个变量的值分配给另一个变量,为什么还要检查它们是否具有相同的值?

这让我感到困惑。这里是更广泛的上下文:

private double ageValue;
public double Age {
  get {
    return ageValue;
  }

  set {
    if(value != ageValue) {
      ageValue = value;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

.net c# if-statement

52
推荐指数
4
解决办法
4822
查看次数

C++中的易失性11

在C++ 11标准中,机器模型从单线程机器变为多线程机器.

这是否意味着static int x; void func() { x = 0; while (x == 0) {} }优化输出读取的典型示例将不再发生在C++ 11中?

编辑:对于那些不知道这个例子的人(我非常惊讶),请阅读:https://en.wikipedia.org/wiki/Volatile_variable

EDIT2:好的,我真的很期待所有知道volatile这个例子的人.

如果您使用示例中的代码,则循环中读取的变量将被优化,使循环无限.

解决方案当然是使用volatile它会强制编译器在每次访问时读取变量.

我的问题是,如果这是C++ 11中不推荐使用的问题,因为机器模型是多线程的,因此编译器应该考虑对系统中存在的变量的并发访问.

c++ volatile c++11

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

标签 统计

.net ×1

c# ×1

c++ ×1

c++11 ×1

if-statement ×1

volatile ×1