【发布时间】:2023-03-28 19:08:01
【问题描述】:
我试图跟随并分解一个 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() 的 -infront 有什么作用?方向是一个队列。它将front()返回的引用乘以-1吗? 感谢您的帮助-我将在下面发布一个指向整个项目所在的 github 的链接。 https://github.com/HexagonNico/Pac-Man/blob/master/PacMan.cpp 如果你喜欢的话。
【问题讨论】:
-
是否将 front() 返回的引用乘以 -1? 实际上,尽管大多数人会说它只是否定了
front()返回的值。 -
-是减法,而不是乘法。在这种情况下,它会否定directions.front()返回的值,这意味着它将符号更改为与原来相反的符号。 -
即
unary minus(或否定)运算符。你可以在this cppreference page找到它的描述。 -
front()返回对队列中第一个对象的引用。就这段代码而言,它正在对队列中的第一个对象进行操作。例如,如果front()返回4的int,则 if 语句将dir与-4进行比较。 -
@KenWhite:
-既不是减法也不是乘法。它只是一个象征。没有其他的。仅仅因为它经常用于减法,并不意味着它是减法。在这种情况下,它是一个否定。正如你所说的那样,但这与 减法 没有任何关系。
标签: c++ if-statement syntax