【问题标题】:C++ Vector giving incredibly unexpected valueC++ Vector 提供了令人难以置信的意想不到的价值
【发布时间】:2013-02-16 15:15:46
【问题描述】:

我有这个代码:

std::vector <int> loc;
loc.push_back(cpx);
loc.push_back(cpy);
loc.push_back(play.GetSize().x);
loc.push_back(70);
std::cout<<loc[3];

在我正在制作的游戏中,但即使我打印 loc[2] 和 loc[3] 的值,它们也完全不同于应有的值,当我运行此代码时,我得到 loc[3] 等于 70070 而不是70. 有人知道如何解决这个问题吗?

【问题讨论】:

  • 没有太多信息可以继续......cpxcpyplay 是什么?
  • 我刚刚注意到 loc[3] 和 loc[4] 总是给我大约 1000 倍大的值,并且在最后两位数字上有几个随机数字。我不完全确定这意味着什么,但我知道 loc[0] 和 loc[1] 没有任何问题。
  • @filipe cpx 是我的“播放器”的当前 x,它当前从 5 开始并保持在那里,除非我按下按钮移动它。 cpy 仅对 y 相同,它从 0 开始并以加速的速度接近 600。 play 是我正在使用的 Sprite 实例的名称。我正在使用 SFML 库。

标签: c++ windows vector codeblocks


【解决方案1】:

您忘记删除的代码中有另一个cout 没有endl\n。那个打印700,而70 是代码示例中最后一行的正确输出。

将你的最后一行更改为std::cout&lt;&lt; " and loc[3] is: " &lt;&lt; loc[3] &lt;&lt; std::endl;,看看我的猜测是正确的,然后去寻找另一个 cout。

【讨论】:

  • 哇......你完全搞定了......在打印语句的末尾添加了一个 endl 以仔细检查并解决了问题。谢谢!
  • +1 为您的心理调试技能。 @Roboinventor :endl 在 99% 的情况下都是矫枉过正——请参阅 What is the C++ iostream endl fiasco?
  • 这是真的,但至少现在我只是使用这些语句来帮助调试它并没有太大区别
  • @perfanoff 我检查了代码,你是对的,它是 70,0,70 而不是 70,700
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 2013-01-06
相关资源
最近更新 更多