for循环:
//for testing, this is usually a value of about 27
int test = level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice].size();
for (int i = 0; i < level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice].size(); i++)
{
//adds the correct nodes to the search
search.push_back(level.Nodes()[level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice][i]].Index());
}
它是一个64位系统。
我对整数&#39; i&#39;得到了非常奇怪的结果。调试时它应该初始化为0,但由于某种原因,它是一个非常高的数字,这反过来意味着for循环没有执行。
答案 0 :(得分:6)
编辑 - 只是改变了它,它只是一个int,现在它得到一个值 -82938723047或某些此类号码。为什么发生这种情况呢? 它破坏了我的计划!
你几乎肯定会咆哮错误的树。代码:
for (int i = 0;
...将i
初始化为0
,期间。如果你试图在调试器中监视它的值并且调试器说i
的值看起来像未初始化的垃圾数据,那么你可能在{{1}之前或之后查看i
已输入范围并已初始化。例如,在MSVC中,如果您在第一次进入循环之前检查i
,它通常会有垃圾数据。
这些不是您正在寻找的机器人。继续前进。
此代码更有可能:
i
这可能不是你认为它正在做的事情。
顺便说一下,如果level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice].size()
的类型是某种类型的level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice]
,我宁愿您使用这样构造的vector
循环。
for
如果您不需要您尝试访问的元素的索引,那么为什么要引用它?您只是在代码中引入了另一个潜在的失败点。