所以我对前缀运算符感到非常头疼。
在我在 Visual C++ 2010 中的调试版本中。
someArray[++index]
将正确增加数组索引,然后使用它来索引数组。
在我的发布版本中,它使用了数组索引,然后增加了它,这引起了一些巨大的麻烦。
奇怪的是我的调试构建代码实际上有一段时间是错误的,我把它写成
someArray[index++]
这将使用索引然后递增它,但调试版本仍在递增它,然后使用该值。直到今天早上我才意识到自己的错误。
这是实际代码的示例。
for(unsigned int newPointIndex = 0; newPointIndex < newEdgeList.size() - 1;) {
m_edges.push_back(Edge(newEdgeList[newPointIndex], newEdgeList[++newPointIndex]));
}
在 for 循环中没有发生递增。当我对数组进行索引时,它发生在循环内的实际代码中。我认为这是一个聪明的小优化,但它使它在发布版本中不起作用。
我第二次对数组进行索引时,它在发布版本中使用了未递增的索引,但在调试版本中工作。