我写了一个像这样结构的代码
int function(){
int i, counter = 0;
for(i=INTEGER; i>0; ++counter, --i){
if(condition){
//do stuff
i+=2;
continue;
}
if(condition){
//do stuff
i+=35;
continue;
}
if(condition){
//do stuff
continue;
}
if(condition){
//do stuff
continue;
}
}
return counter;
}
我有充分理解变量增量机制作为cicle参数的问题。 在上面的例子中:
i
变量增加和减少的可能性如何,而返回的counter
变量仅增加1
?答案 0 :(得分:1)
变量counter
在for语句中增加的次数与变量i
在for语句中减少的次数相同
for(i=INTEGER; i>0; ++counter, --i){
在continue
语句后,这部分for语句
++counter, --i
已执行。
实际上这个循环带有continue语句
for(i=INTEGER; i>0; ++counter, --i){
if(condition){
//do stuff
i+=2;
continue;
}
//...
}
等同于以下
for(i=INTEGER; i>0; ++counter, --i){
if(condition){
//do stuff
i+=2;
goto Label;
}
//...
Label:;
}
答案 1 :(得分:0)
好的我调试我的代码,在主要结尾处错过了return 0
。
这导致错误的返回值。
答案 2 :(得分:0)
你所说的正在发生,不应该发生。逗号运算符组合了两个语句,以便它们作为单个语句执行。如果--1执行,++计数器也应该同时执行。还有其他事情正在发生。