c++ - 我需要帮助理解这个特定 if 语句的语法的作用

标签 c++ if-statement syntax

我正在尝试跟踪并分解 pacman 克隆的源代码。有一个 if 语句让我感到困惑。

void PacMan::queueDirection(Direction dir)
{
    if (!directions.empty())
    {
        if (dir == -directions.front()) //this statement
        {
            std::queue<Direction> clear;
            std::swap(directions, clear);
        }
    }

    if(directions.size() < 2)
        directions.push(dir);
}

我的问题是 -directions.front() 的 - 前面有什么作用?方向是一个队列。它会将 front() 返回的引用乘以 -1 吗? 感谢您的帮助 - 我将在下面发布整个项目所在的 github 链接。 https://github.com/HexagonNico/Pac-Man/blob/master/PacMan.cpp如果这激起了你的兴趣。

最佳答案

您粘贴的代码似乎具有以下意图:
如果队列头部的 Direction 实例(directions)是作为该函数参数提供的值的负数,则队列将被清除,并且所提供的参数将入队。

本例中的 Direction 类型是 header Directions.h 中定义的枚举。

enum Direction
{
    Up = 1,
    Down = -1,
    Left = 2,
    Right = -2,
    Unset = 0
};

在本例中,对 Direction 实例取反,只会给出它的相反方向。

作为示例,请考虑在调用函数时值 Direction::Up 位于队列的头部,并且函数的参数为​​ Direction::Down。在这种情况下,队列方向将被清除。我添加了example为了使这一点更清楚。

关于c++ - 我需要帮助理解这个特定 if 语句的语法的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63974255/

相关文章:

bash - 在 Bash if 条件下使用 (( ... )) 时出错

objective-c - 这是什么 Objective-C 语法,椭圆样式的点符号? "..."

c++ - 关于 C++ 异常处理

Javascript 逻辑运算符困惑

c++ - C++中的元组 vector

python - 当条件要求输入为特殊字符时,如何在Python中编写IF函数?

VBA : Performance on 24-deep nested IF statement

c - ANSI C 变量声明语法 "+0"?

c++ - 如何根据给定的长度确定矩形?

c++ - 如何使 Visual Studio 的构建变得非常冗长?