请考虑以下代码:
int col=0;
for(int l=0; rx_state_== MAC_COLL; l++)
{
col = col+1; // or col++;
}
return col;
上述代码的目标或逻辑是,对于'l'的每个实例,必须检查rx_state == MAC_COLL,如果为true,则应执行“col ++”行。 (对不起,我想我正在向专家解释'for loop'的基础知识)最后,我要求返回总冲突次数(col)。
现在,我关注的领域是整数'l'与'rx_state_ == MAC_COLL'中涉及的变量没有特定的联系;我只是想要继续检查语句'rx_state == MAC_COLL',直到它的错误和要返回的数字。
我的目标是否符合上述代码?
由于
答案 0 :(得分:3)
您的for
循环可以转换为while
循环,例如:
int l=0;
while (rx_state_ == MAC_COLL) {
col = col+1;
l++;
}
return col;
由于您显然没有真正使用l
,因此将其编码为实际的while
循环可能更简单:
int col = 0;
while (rx_state_ == MAC_COLL)
++col;
return col;
...或者您可以将其编码为for
循环,执行您真正想要的内容:
for (int col=0; rx_state == MAC_COLL; ++col)
;
return col;
要使其中任何一个有意义,rx_state
或MAC_COLL
最好至少被限定为volatile
。
答案 1 :(得分:1)
这里的while
循环可能会更好:
while (rx_state_== MAC_COLL)
col++;
但是,如果您只是循环而没有任何其他可能使更改有机会运行的代码,那么您应该考虑如何 rx_state
。如果你正在使用线程,那么有更好的方法而不是忙等待(可能使用很多的CPU功率基本上什么也没做)。如果必须忙等待,那么我建议你在循环中抛出一个短暂的延迟,让CPU做除了循环之外的其他事情。
答案 2 :(得分:0)
会的。但你所做的基本上是一段时间。
int col=0;
while(rx_state_== MAC_COLL)
{
col = col+1; // or col++;
}
return col;