当没有使用赋值运算符时,if 语句如何更改变量?

How can an if statement change a variable, when there's no assignement operator used?

我有一个动态队列,所以我想检查头指针是否指向某物。所以我这样做:

if (mHeadPtr = NULL)
    return false;

在执行之前指针不为空(这也是它不进入“return false”行的原因),但不知何故之后它是空的,我不知道为什么。

如果我改为检查变量是否不为空,它可以正常工作。

if (mHeadPtr != NULL)
    std::cout << "yay!" << std::endl;
else
    return false;

if 语句怎么会改变它只应该读取的变量?

对于比较,您应该使用 == 而不是 =。通过使用单个 =,您不会比较变量的值,而是将 NULL 分配给它。