gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:43:51 28 4
gpt4 key购买 nike

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

用户可以通过从 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com