c++变量在每次循环迭代期间被覆盖

标签 c++ variables

我正在开发模拟软件,该软件需要实体的某些预定行为来实现其功能的某些方面。我目前正在研究的行为是在模拟环境中设置实体以围绕用户确定的点“螺旋”移动。

用户可以通过从 GUI 中选择特定选项来为实体设置多种现有的行为选择。我打算实现这种新行为的方式如下:

  • 获取从实体的当前位置到螺旋原点(实体将绕其旋转的用户指定的点)的角度。
  • 检查实体与螺旋原点的当前距离:
  • 如果距离原点大于一定距离,则直接向原点移动,直到距离原点一定距离,然后开始螺旋运动。
  • 如果距离原点小于一定距离,则远离原点,直到达到该距离,然后开始螺旋运动。
  • 每次实体完成一个螺旋回路时,GUI 中显示的值(显示已完成的回路数)都应更新。

我已经开始编写一个循环来实现此行为,并且我打算通过在循环的每次迭代中检查实体与原点的角度来增加完成的电路数量 - 每次该角度与当螺旋行为开始时,我就会知道另一个循环已经完成。但是,由于我在循环开始时得到了实体和原点之间的角度,所以这个值将随着循环的每次迭代而更新——这意味着实体将永远不会再从原点到达那个角度,因为角度会不断变化。

我想知道的是,是否有一种方法可以在循环的第一次迭代中设置变量的值,然后在循环的任何其他迭代中不再更改该值?我能否将该值分配给一个全局变量,并使其成为“绝对”值,这样即使我再次尝试更改它的值,我也无法做到?

编辑

明显的建议是在循环外设置该角度变量值,但由于已实现的现有行为的性质,以及当用户选择其中一种行为时会发生什么,我不能这样做。

最佳答案

这听起来几乎像是您应该在循环外执行循环的第一次迭代来设置这个一次性变量,然后在循环内执行n-1 次迭代循环。如果循环体比较复杂,就放在函数中。另请记住,如果您碰巧为角度使用浮点值,则在第一次迭代后它们相等的可能性微乎其微。

int loop_body(params)
{
    // Do stuff.
    return first_iteration_value;
}

int initial_value = loop_body(params);
for(init; condition; incr)
{
    loop_body(params);
}

关于c++变量在每次循环迭代期间被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739419/

相关文章:

c++ - 保留拉丁重音字符 C++ ISO-8859-1

c++ - 删除重复条目

string - 如何将工作区变量名称与字符串列表(元胞数组)进行比较?

variables - 将来自 .cmake 文件的源变量包含到 CMakeList.txt 的正确方法

oracle - 在存储过程中将Select分配给变量

javascript - 有没有一种很好的简单方法来检查 Javascript 中的变量是否有值?

ios - 是否可以在不创建中间变量的情况下赋值?

c++ - Qt C++ 从 QTableView 的选定行的每个单元格中获取数据

c++ - __thread 说明符在 C++ 类中不起作用

c++ - 从不同的 QThread 访问 QObject 方法的安全性