有没有办法让这个更清洁,而不是像我在这里一样使用tempvalue?
更新代码有一个逻辑错误,并没有显示我正在做什么。 这就是我正在做的事情:
var loopTempValue = noOfPackets / 100;
for(i=0; i < noOfPackets; i++)
{
\\DoStuff
if (i == loopTempValue)
{
loopTempValue = loopTempValue + (noOfPackets / 100);
UploadBackGroundWorker.ReportProgress(pross);
}
}
更新最终
这就是它在反馈后如何修复的,那些家伙。
if (i % (noOfPackets / 100) == 0 && i != 0)
{
UploadBackGroundWorker.ReportProgress(pross);
}
答案 0 :(得分:21)
if (i % 100 == 0 && i != 0) { //YOUR CODE }
对于像这样的支票来说,模数非常棒。
有关模数的更多信息 - http://www.vias.org/cppcourse/chap04_01.html
更新:我添加&& i != 0
为0的情况为真。
如果你想使用tempvalue而不是硬编码100,那么这将是一个解决方案:
if (i % tempvalue == 0 && i != 0) { //YOUR CODE }
答案 1 :(得分:5)
你的意思是你希望在循环期间触发条件100次,即每36次迭代? (在原始代码中,每次都会使tempvalue加倍,因此在循环过程中只会触发七次。)
您可以使用模运算符来检查它。这将触发每组36次迭代的最后一个条件:
for(i=0; i < 3600; i++) {
\\DoStuff
if(i % 36 == 35) {
\\DoStuff
}
}
答案 2 :(得分:1)
if( (i+1 % (tempvalue+1) == 0)
{
//DoStuff
//tempvaule = tempvalue + tempvalue;
}