C++ 条件为每x个循环只执行一次
我想不出来,也许有人能帮我。我有一个只有一个参数的函数,在这个函数中有一些代码,我想每隔x次运行一次C++ 条件为每x个循环只执行一次,c++,math,conditional-statements,C++,Math,Conditional Statements,我想不出来,也许有人能帮我。我有一个只有一个参数的函数,在这个函数中有一些代码,我想每隔x次运行一次 void doSomething(int _arg){ // do something every 250 times } 该函数被重复调用,但参数没有增加1。例如,函数调用可能是这样的,我希望函数中的条件每250次运行一次 doSomething(1); // do something doSomething(130); doSomething(230); doSomething(3
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(\u arg%250==0)
,因为\u 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
,意味着操作必须发生两次
如果每次调用函数时它都必须继续执行操作以赶上下一个\u目标,则可以执行以下操作:
void doSomething(int _arg)
{
static unsigned int next_target = 0;
if (_arg >= next_target)
{
// do something special
next_target += 250;
}
}
void doSomething(int _arg)
{
static unsigned int next_target = 0;
while (_arg >= next_target)
{
// do something special
next_target += 250;
}
}
或者,如果它应该立即采取行动,直到赶上下一个目标,您可以这样做:
void doSomething(int _arg)
{
static unsigned int next_target = 0;
if (_arg >= next_target)
{
// do something special
next_target += 250;
}
}
void doSomething(int _arg)
{
static unsigned int next_target = 0;
while (_arg >= next_target)
{
// do something special
next_target += 250;
}
}
一个更好的方法是把这个包打包在一个类中,这样你就可以移除任何可能的线程问题吗?@ MarkB,告诉我,我知道很少的C++。-1。代码>\u arg>x不检查跳转250或更多!它应该是
\u arg>=(x+250)
@cnicutar:Yes。看问题。@Nawaz我不确定我是否理解,你能提供有问题的具体输入吗?