条件是每x个循环只做一次
condition to do something only once every x number of loops
我想不通,所以这里可能有人可以帮我。我有一个带有一个参数的函数,在这个函数中有我想每x次运行的代码。
void doSomething(int _arg){
// do something every 250 times
}
函数被反复调用,但参数没有增加1。例如,函数调用可能是这样的,我希望函数中的一个条件每250次运行一次。
doSomething(1); // do something
doSomething(130);
doSomething(230);
doSomething(310); // 250 was passed, do something
doSomething(420);
doSomething(570); // 2*250 was passed, do something
我不能只做if(_arg % 250 == 0)
这样的事情,因为_arg
的值是不规则的(但间隔总是小于250)。
静态变量:怎么样
void doSomething(int _arg){
static int x = 0;
if (_arg > x) {
x += 250; //update x to be crossed next time
// do something
}
}
您可以使用一个额外的变量,比如全局或静态:
void doSomething(int _arg)
{
static unsigned int next_target = 0;
if (_arg >= next_target)
{
// do something special
next_target = _arg - _arg % 250 + 250; // set next_target to smallest
// multiple of 250 above _arg
}
}
这假设接收10
然后接收1002
,意味着动作必须发生两次。
如果每次调用函数以赶上next_target
时它都必须继续执行操作,则可以执行以下操作:
void doSomething(int _arg)
{
static unsigned int next_target = 0;
if (_arg >= next_target)
{
// do something special
next_target += 250;
}
}
或者,如果它应该立即采取行动,直到赶上next_target
,你可以这样做:
void doSomething(int _arg)
{
static unsigned int next_target = 0;
while (_arg >= next_target)
{
// do something special
next_target += 250;
}
}
相关文章:
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 花括号使循环运行一次?
- 从子菜单返回后,正确的输入至少进入验证循环一次
- foor 循环的最后一次迭代中的指针更改
- 有没有办法在循环中的条件至少满足一次时运行语句?
- 循环中本地对象的析构函数是否保证在下一次迭代之前被调用?
- For循环在cpp中仅执行一次
- 如何强制循环执行另一次迭代到零并关闭循环
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- 为什么在C/C++中的while循环中只发生一次取消引用
- 如何防止我的循环额外运行一次?
- Atmel Studio 7:ASF 库提供的 USART 中断处理程序仅在 main() 中遇到无限循环时工作一次?
- 如何在主游戏循环中使用 sfml 只播放一次声音
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- C++,查找最低值,函数错误:循环最多运行一次(循环增量从未执行)
- boost::multi_index_container:从任意索引中取equal_range,只实现一次循环
- 使用sleep_for每毫秒运行一次循环
- 循环将最多运行一次(循环增量永远不会执行)
- 为什么函数立即完成一次循环,然后再次运行